我有2个视图,一个登录视图和一个主视图。
我使用SWRevealViewController,我希望在应用启动时自动显示我的菜单。我知道如何显示我的菜单,但我不知道如何在启动时只显示一次。
我想在我的Login视图和主视图之间传递一个简单的String但没有segue,并进行了一个简单的测试:
if (myPreviousView == "LoginView")
{
// display my menu
}
答案 0 :(得分:1)
另一种方法是使用NSUserDefault存储您的字符串,而不是可以从应用程序中的任何位置访问。
所以,你在第一个视图中将你的字符串放入NSUserDefaults:
// Initialize the NSUserDefaults object and an array for data storage
NSUserDefaults *defsData = [NSUserDefaults standardUserDefaults];
NSMutableArray *myArray = [[NSMutableArray alloc] init];
// Add your string to the custom array
NSString *myString = @"My string.";
[myArray addObject:myString];
// Put the array back into UserDefaults for later use
[defsData setObject:myArray forKey:@"Key"]; // Key can be anything
[defsData synchronize];
现在,数组(及其中的字符串)随处可用。因此,当您导航到第二个视图控制器时,只需初始化NSUserDefaults并访问该字符串:
NSUserDefaults* defsData = [NSUserDefaults standardUserDefaults];
NSArray *myArray = [defsData objectForKey:@"Key"];
NSLog("This is my stored string: %@", [myArray objectAtIndex:0]);
答案 1 :(得分:0)
您可以修改第二个视图控制器的init方法,以便在子类化时获取自定义属性。所以,假设你创建了一个标准的UIViewController(.h和.m文件)。您可以在.h文件中修改此新类的init方法:
- (instancetype)initWithString:(NSString *)string;
然后用.m中的新标准替换标准init:
- (instancetype)initWithString:(NSString *)string {
}
因此,当您调用视图控制器时,您只需使用这个新的init方法并传递您想要的字符串:
UIViewController *viewController = [[UIViewController alloc] initWithString:myString];
[self presentViewController:viewController animated:NO completion:nil];
这当然是一种程序化方法,但它应该很容易应用于界面构建器(不幸的是,因为我从不使用界面构建器,我不知道具体如何,但正如我所说,它应该相当简单任何使用它的人。)