Fixes.
[REVERTED] managedObjectContext and persistenceStoreCoordinator needn't be lazy anymore. [FIXED] AdHoc #def'ed code fixed.
This commit is contained in:
parent
6f1d53ea35
commit
4d5f609d72
@ -3,6 +3,7 @@
|
|||||||
<option name="myName" value="Project Default" />
|
<option name="myName" value="Project Default" />
|
||||||
<option name="myLocal" value="false" />
|
<option name="myLocal" value="false" />
|
||||||
<inspection_tool class="LossyEncoding" enabled="true" level="WARNING" enabled_by_default="true" />
|
<inspection_tool class="LossyEncoding" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
<inspection_tool class="OCUnusedMethodInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
<inspection_tool class="UnusedLocalVariable" enabled="false" level="WARNING" enabled_by_default="false" />
|
<inspection_tool class="UnusedLocalVariable" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
</profile>
|
</profile>
|
||||||
</component>
|
</component>
|
@ -69,7 +69,7 @@
|
|||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
savedToolIdentifier = ""
|
savedToolIdentifier = ""
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
buildConfiguration = "AdHoc"
|
buildConfiguration = "Debug"
|
||||||
debugDocumentVersioning = "YES">
|
debugDocumentVersioning = "YES">
|
||||||
<BuildableProductRunnable>
|
<BuildableProductRunnable>
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
|
@ -138,7 +138,7 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
|
|||||||
@try {
|
@try {
|
||||||
if ([[MPiOSConfig get].sendDebugInfo boolValue]) {
|
if ([[MPiOSConfig get].sendDebugInfo boolValue]) {
|
||||||
[TestFlight addCustomEnvironmentInformation:user.name forKey:@"username"];
|
[TestFlight addCustomEnvironmentInformation:user.name forKey:@"username"];
|
||||||
[[Crashlytics sharedInstance] setValue:user.name forKey:@"username"];
|
[[Crashlytics sharedInstance] setObjectValue:user.name forKey:@"username"];
|
||||||
[[ATConnect sharedConnection] addAdditionalInfoToFeedback:user.name withKey:@"username"];
|
[[ATConnect sharedConnection] addAdditionalInfoToFeedback:user.name withKey:@"username"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,18 +40,13 @@ static NSDateFormatter *rfc3339DateFormatter = nil;
|
|||||||
if (managedObjectContext)
|
if (managedObjectContext)
|
||||||
return managedObjectContext;
|
return managedObjectContext;
|
||||||
|
|
||||||
return [PearlLazy lazyObjectLoadedFrom:^id {
|
|
||||||
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
|
|
||||||
assert(coordinator);
|
|
||||||
|
|
||||||
managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
|
managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
|
||||||
[managedObjectContext performBlockAndWait:^{
|
[managedObjectContext performBlockAndWait:^{
|
||||||
managedObjectContext.persistentStoreCoordinator = coordinator;
|
managedObjectContext.persistentStoreCoordinator = [self persistentStoreCoordinator];
|
||||||
managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy;
|
managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
return managedObjectContext;
|
return managedObjectContext;
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
|
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
|
||||||
@ -59,18 +54,11 @@ static NSDateFormatter *rfc3339DateFormatter = nil;
|
|||||||
// Start loading the store.
|
// Start loading the store.
|
||||||
[self storeManager];
|
[self storeManager];
|
||||||
|
|
||||||
return [PearlLazy lazyObjectLoadedFrom:^id {
|
|
||||||
// Wait until the storeManager is ready.
|
// Wait until the storeManager is ready.
|
||||||
for (__block BOOL isReady = [self storeManager].isReady; !isReady;) {
|
while (![self storeManager].isReady)
|
||||||
[NSThread sleepForTimeInterval:0.1];
|
[NSThread sleepForTimeInterval:0.1];
|
||||||
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
|
||||||
isReady = [self storeManager].isReady;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
assert([self storeManager].isReady);
|
|
||||||
return [self storeManager].persistentStoreCoordinator;
|
return [self storeManager].persistentStoreCoordinator;
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (UbiquityStoreManager *)storeManager {
|
- (UbiquityStoreManager *)storeManager {
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
// Copyright (c) 2012 Lyndir. All rights reserved.
|
// Copyright (c) 2012 Lyndir. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "MPTypes.h"
|
|
||||||
#import "MPEntities.h"
|
#import "MPEntities.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
[MPiOSConfig get];
|
[MPiOSConfig get];
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
[PearlLogger get].autoprintLevel = PearlLogLevelTrace;
|
[PearlLogger get].autoprintLevel = PearlLogLevelDebug;
|
||||||
//[NSClassFromString(@"WebView") performSelector:NSSelectorFromString(@"_enableRemoteInspector")];
|
//[NSClassFromString(@"WebView") performSelector:NSSelectorFromString(@"_enableRemoteInspector")];
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -167,7 +167,7 @@
|
|||||||
dbg(@"Initializing TestFlight");
|
dbg(@"Initializing TestFlight");
|
||||||
[TestFlight addCustomEnvironmentInformation:@"Anonymous" forKey:@"username"];
|
[TestFlight addCustomEnvironmentInformation:@"Anonymous" forKey:@"username"];
|
||||||
#ifdef ADHOC
|
#ifdef ADHOC
|
||||||
[TestFlight setDeviceIdentifier:[UIDevice currentDevice].uniqueIdentifier];
|
[TestFlight setDeviceIdentifier:[(id)[UIDevice currentDevice] uniqueIdentifier]];
|
||||||
#else
|
#else
|
||||||
[TestFlight setDeviceIdentifier:[PearlKeyChain deviceIdentifier]];
|
[TestFlight setDeviceIdentifier:[PearlKeyChain deviceIdentifier]];
|
||||||
#endif
|
#endif
|
||||||
@ -326,7 +326,7 @@ UIImage *segmentUnselectedUnselected = [UIImage imageNamed:@"segcontrol_uns-uns.
|
|||||||
@"lhunath@lyndir.com\n"
|
@"lhunath@lyndir.com\n"
|
||||||
@"Or report detailed issues at:\n"
|
@"Or report detailed issues at:\n"
|
||||||
@"https://youtrack.lyndir.com\n"
|
@"https://youtrack.lyndir.com\n"
|
||||||
viewStyle:UIAlertViewStyleDefault tappedButtonBlock:nil
|
viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:nil
|
||||||
cancelTitle:nil otherTitles:[PearlStrings get].commonButtonOkay, nil];
|
cancelTitle:nil otherTitles:[PearlStrings get].commonButtonOkay, nil];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -601,7 +601,7 @@ UIImage *segmentUnselectedUnselected = [UIImage imageNamed:@"segcontrol_uns-uns.
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
return NSNullToNil([[self localyticsInfo] valueForKeyPath:@"Key.development"]);
|
return NSNullToNil([[self localyticsInfo] valueForKeyPath:@"Key.development"]);
|
||||||
#else
|
#else
|
||||||
return NullToNil([[self localyticsInfo] valueForKeyPath:@"Key.distribution"]);
|
return NSNullToNil([[self localyticsInfo] valueForKeyPath:@"Key.distribution"]);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,14 +36,10 @@
|
|||||||
|
|
||||||
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([MPElementEntity class])];
|
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([MPElementEntity class])];
|
||||||
fetchRequest.sortDescriptors = [NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"uses_" ascending:NO]];
|
fetchRequest.sortDescriptors = [NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"uses_" ascending:NO]];
|
||||||
self.fetchedResultsController = [PearlLazy lazyObjectLoadedFrom:^id {
|
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
|
||||||
NSFetchedResultsController *controller = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
|
|
||||||
managedObjectContext:[MPAppDelegate managedObjectContext]
|
managedObjectContext:[MPAppDelegate managedObjectContext]
|
||||||
sectionNameKeyPath:nil cacheName:nil];
|
sectionNameKeyPath:nil cacheName:nil];
|
||||||
controller.delegate = self;
|
self.fetchedResultsController.delegate = self;
|
||||||
|
|
||||||
return controller;
|
|
||||||
}];
|
|
||||||
|
|
||||||
self.tipView = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 170)];
|
self.tipView = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 170)];
|
||||||
self.tipView.textAlignment = UITextAlignmentCenter;
|
self.tipView.textAlignment = UITextAlignmentCenter;
|
||||||
|
@ -167,20 +167,6 @@
|
|||||||
|
|
||||||
- (UIButton *)setupAvatar:(UIButton *)avatar forUser:(MPUserEntity *)user {
|
- (UIButton *)setupAvatar:(UIButton *)avatar forUser:(MPUserEntity *)user {
|
||||||
|
|
||||||
[avatar onHighlightOrSelect:^(BOOL highlighted, BOOL selected) {
|
|
||||||
if (highlighted || selected)
|
|
||||||
avatar.backgroundColor = self.avatarTemplate.backgroundColor;
|
|
||||||
else
|
|
||||||
avatar.backgroundColor = [UIColor clearColor];
|
|
||||||
} options:0];
|
|
||||||
[avatar onSelect:^(BOOL selected) {
|
|
||||||
self.selectedUser = selected? user: nil;
|
|
||||||
if (user)
|
|
||||||
[self didToggleUserSelection];
|
|
||||||
else
|
|
||||||
if (selected)
|
|
||||||
[self didSelectNewUserAvatar:avatar];
|
|
||||||
} options:0];
|
|
||||||
avatar.center = CGPointMake(avatar.center.x + [self.avatarToUser count] * 160, avatar.center.y);
|
avatar.center = CGPointMake(avatar.center.x + [self.avatarToUser count] * 160, avatar.center.y);
|
||||||
avatar.hidden = NO;
|
avatar.hidden = NO;
|
||||||
avatar.layer.cornerRadius = avatar.bounds.size.height / 2;
|
avatar.layer.cornerRadius = avatar.bounds.size.height / 2;
|
||||||
@ -189,12 +175,26 @@
|
|||||||
avatar.layer.shadowRadius = 20;
|
avatar.layer.shadowRadius = 20;
|
||||||
avatar.layer.masksToBounds = NO;
|
avatar.layer.masksToBounds = NO;
|
||||||
avatar.backgroundColor = [UIColor clearColor];
|
avatar.backgroundColor = [UIColor clearColor];
|
||||||
|
|
||||||
dbg(@"User: %@, avatar: %d", user.name, user.avatar);
|
|
||||||
avatar.tag = user.avatar;
|
avatar.tag = user.avatar;
|
||||||
|
|
||||||
[avatar setBackgroundImage:[UIImage imageNamed:PearlString(@"avatar-%u", user.avatar)]
|
[avatar setBackgroundImage:[UIImage imageNamed:PearlString(@"avatar-%u", user.avatar)]
|
||||||
forState:UIControlStateNormal];
|
forState:UIControlStateNormal];
|
||||||
[avatar setSelectionInSuperviewCandidate:YES isClearable:YES];
|
[avatar setSelectionInSuperviewCandidate:YES isClearable:YES];
|
||||||
|
[avatar onHighlightOrSelect:^(BOOL highlighted, BOOL selected) {
|
||||||
|
if (highlighted || selected)
|
||||||
|
avatar.backgroundColor = self.avatarTemplate.backgroundColor;
|
||||||
|
else
|
||||||
|
avatar.backgroundColor = [UIColor clearColor];
|
||||||
|
} options:0];
|
||||||
|
[avatar onSelect:^(BOOL selected) {
|
||||||
|
if (selected) {
|
||||||
|
if ((self.selectedUser = user))
|
||||||
|
[self didToggleUserSelection];
|
||||||
|
else
|
||||||
|
[self didSelectNewUserAvatar:avatar];
|
||||||
|
} else
|
||||||
|
[self didToggleUserSelection];
|
||||||
|
} options:0];
|
||||||
|
|
||||||
[self.avatarToUser setObject:NilToNSNull(user) forKey:[NSValue valueWithNonretainedObject:avatar]];
|
[self.avatarToUser setObject:NilToNSNull(user) forKey:[NSValue valueWithNonretainedObject:avatar]];
|
||||||
|
|
||||||
@ -210,7 +210,7 @@
|
|||||||
[self.passwordField resignFirstResponder];
|
[self.passwordField resignFirstResponder];
|
||||||
else
|
else
|
||||||
if ([[MPAppDelegate get] signInAsUser:self.selectedUser usingMasterPassword:nil]) {
|
if ([[MPAppDelegate get] signInAsUser:self.selectedUser usingMasterPassword:nil]) {
|
||||||
[self dismissModalViewControllerAnimated:YES];
|
[self performSegueWithIdentifier:@"MP_Unlock_Dismiss" sender:self];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,7 +352,7 @@
|
|||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
if (unlocked) {
|
if (unlocked) {
|
||||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (long)(NSEC_PER_SEC * 0.5f)), dispatch_get_main_queue(), ^{
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (long)(NSEC_PER_SEC * 0.5f)), dispatch_get_main_queue(), ^{
|
||||||
[self dismissModalViewControllerAnimated:YES];
|
[self performSegueWithIdentifier:@"MP_Unlock_Dismiss" sender:self];
|
||||||
});
|
});
|
||||||
} else
|
} else
|
||||||
if (self.passwordField.text.length)
|
if (self.passwordField.text.length)
|
||||||
|
@ -925,7 +925,6 @@ L4m3P4sSw0rD</string>
|
|||||||
<connections>
|
<connections>
|
||||||
<segue destination="PQa-Xl-A3x" kind="relationship" relationship="rootViewController" id="LUg-eF-JQd"/>
|
<segue destination="PQa-Xl-A3x" kind="relationship" relationship="rootViewController" id="LUg-eF-JQd"/>
|
||||||
<segue destination="qz3-eG-aEi" kind="modal" identifier="MP_Guide" id="vyG-wN-8hU"/>
|
<segue destination="qz3-eG-aEi" kind="modal" identifier="MP_Guide" id="vyG-wN-8hU"/>
|
||||||
<segue destination="Nbn-Rv-sP1" kind="modal" identifier="MP_Unlock" id="6s2-3H-q5S"/>
|
|
||||||
</connections>
|
</connections>
|
||||||
</navigationController>
|
</navigationController>
|
||||||
</objects>
|
</objects>
|
||||||
@ -1244,6 +1243,93 @@ L4m3P4sSw0rD</string>
|
|||||||
<image name="ui_spinner.png" width="75" height="75"/>
|
<image name="ui_spinner.png" width="75" height="75"/>
|
||||||
<image name="ui_textfield.png" width="158" height="34"/>
|
<image name="ui_textfield.png" width="158" height="34"/>
|
||||||
</resources>
|
</resources>
|
||||||
|
<classes>
|
||||||
|
<class className="IASKAppSettingsViewController" superclassName="UITableViewController">
|
||||||
|
<source key="sourceIdentifier" type="project" relativePath="./Classes/IASKAppSettingsViewController.h"/>
|
||||||
|
<relationships>
|
||||||
|
<relationship kind="action" name="dismiss:"/>
|
||||||
|
<relationship kind="outlet" name="delegate"/>
|
||||||
|
</relationships>
|
||||||
|
</class>
|
||||||
|
<class className="MPGuideViewController" superclassName="UIViewController">
|
||||||
|
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPGuideViewController.h"/>
|
||||||
|
<relationships>
|
||||||
|
<relationship kind="action" name="close"/>
|
||||||
|
<relationship kind="outlet" name="scrollView" candidateClass="UIScrollView"/>
|
||||||
|
</relationships>
|
||||||
|
</class>
|
||||||
|
<class className="MPMainViewController" superclassName="UIViewController">
|
||||||
|
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPMainViewController.h"/>
|
||||||
|
<relationships>
|
||||||
|
<relationship kind="action" name="action:" candidateClass="UIBarButtonItem"/>
|
||||||
|
<relationship kind="action" name="closeAlert"/>
|
||||||
|
<relationship kind="action" name="copyContent"/>
|
||||||
|
<relationship kind="action" name="editPassword"/>
|
||||||
|
<relationship kind="action" name="incrementPasswordCounter"/>
|
||||||
|
<relationship kind="action" name="resetPasswordCounter:" candidateClass="UILongPressGestureRecognizer"/>
|
||||||
|
<relationship kind="outlet" name="actionsTipContainer" candidateClass="UIView"/>
|
||||||
|
<relationship kind="outlet" name="alertBody" candidateClass="UITextView"/>
|
||||||
|
<relationship kind="outlet" name="alertContainer" candidateClass="UIView"/>
|
||||||
|
<relationship kind="outlet" name="alertTitle" candidateClass="UILabel"/>
|
||||||
|
<relationship kind="outlet" name="contentContainer" candidateClass="UIView"/>
|
||||||
|
<relationship kind="outlet" name="contentField" candidateClass="UITextField"/>
|
||||||
|
<relationship kind="outlet" name="contentTipBody" candidateClass="UILabel"/>
|
||||||
|
<relationship kind="outlet" name="contentTipContainer" candidateClass="UIView"/>
|
||||||
|
<relationship kind="outlet" name="contentTipEditIcon" candidateClass="UIImageView"/>
|
||||||
|
<relationship kind="outlet" name="helpContainer" candidateClass="UIView"/>
|
||||||
|
<relationship kind="outlet" name="helpView" candidateClass="UIWebView"/>
|
||||||
|
<relationship kind="outlet" name="passwordCounter" candidateClass="UILabel"/>
|
||||||
|
<relationship kind="outlet" name="passwordEdit" candidateClass="UIButton"/>
|
||||||
|
<relationship kind="outlet" name="passwordIncrementer" candidateClass="UIButton"/>
|
||||||
|
<relationship kind="outlet" name="searchResultsController" candidateClass="MPSearchDelegate"/>
|
||||||
|
<relationship kind="outlet" name="searchTipContainer" candidateClass="UIView"/>
|
||||||
|
<relationship kind="outlet" name="siteName" candidateClass="UILabel"/>
|
||||||
|
<relationship kind="outlet" name="typeButton" candidateClass="UIButton"/>
|
||||||
|
<relationship kind="outlet" name="typeTipContainer" candidateClass="UIView"/>
|
||||||
|
</relationships>
|
||||||
|
</class>
|
||||||
|
<class className="MPPreferencesViewController" superclassName="UITableViewController">
|
||||||
|
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPPreferencesViewController.h"/>
|
||||||
|
<relationships>
|
||||||
|
<relationship kind="action" name="didToggleSwitch:" candidateClass="UISwitch"/>
|
||||||
|
<relationship kind="outlet" name="avatarTemplate" candidateClass="UIButton"/>
|
||||||
|
<relationship kind="outlet" name="avatarsView" candidateClass="UIScrollView"/>
|
||||||
|
<relationship kind="outlet" name="changeMPCell" candidateClass="UITableViewCell"/>
|
||||||
|
<relationship kind="outlet" name="exportCell" candidateClass="UITableViewCell"/>
|
||||||
|
<relationship kind="outlet" name="savePasswordSwitch" candidateClass="UISwitch"/>
|
||||||
|
</relationships>
|
||||||
|
</class>
|
||||||
|
<class className="MPSearchDelegate" superclassName="NSObject">
|
||||||
|
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPSearchDelegate.h"/>
|
||||||
|
<relationships>
|
||||||
|
<relationship kind="outlet" name="delegate"/>
|
||||||
|
<relationship kind="outlet" name="searchDisplayController" candidateClass="UISearchDisplayController"/>
|
||||||
|
<relationship kind="outlet" name="searchTipContainer" candidateClass="UIView"/>
|
||||||
|
</relationships>
|
||||||
|
</class>
|
||||||
|
<class className="MPTypeViewController" superclassName="UITableViewController">
|
||||||
|
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPTypeViewController.h"/>
|
||||||
|
<relationships>
|
||||||
|
<relationship kind="outlet" name="recommendedTipContainer" candidateClass="UIView"/>
|
||||||
|
</relationships>
|
||||||
|
</class>
|
||||||
|
<class className="MPUnlockViewController" superclassName="UIViewController">
|
||||||
|
<source key="sourceIdentifier" type="project" relativePath="./Classes/MPUnlockViewController.h"/>
|
||||||
|
<relationships>
|
||||||
|
<relationship kind="action" name="deleteTargetedUser:" candidateClass="UILongPressGestureRecognizer"/>
|
||||||
|
<relationship kind="outlet" name="avatarTemplate" candidateClass="UIButton"/>
|
||||||
|
<relationship kind="outlet" name="avatarsView" candidateClass="UIScrollView"/>
|
||||||
|
<relationship kind="outlet" name="deleteTip" candidateClass="UILabel"/>
|
||||||
|
<relationship kind="outlet" name="nameLabel" candidateClass="UILabel"/>
|
||||||
|
<relationship kind="outlet" name="oldNameLabel" candidateClass="UILabel"/>
|
||||||
|
<relationship kind="outlet" name="passwordField" candidateClass="UITextField"/>
|
||||||
|
<relationship kind="outlet" name="passwordTipLabel" candidateClass="UILabel"/>
|
||||||
|
<relationship kind="outlet" name="passwordTipView" candidateClass="UIView"/>
|
||||||
|
<relationship kind="outlet" name="passwordView" candidateClass="UIView"/>
|
||||||
|
<relationship kind="outlet" name="spinner" candidateClass="UIImageView"/>
|
||||||
|
</relationships>
|
||||||
|
</class>
|
||||||
|
</classes>
|
||||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||||
<nil key="statusBar"/>
|
<nil key="statusBar"/>
|
||||||
<simulatedOrientationMetrics key="orientation"/>
|
<simulatedOrientationMetrics key="orientation"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user