我是初学者iPhone开发者,所以如果此处缺少信息我会道歉。我创建了一个故事板,其中有一个初始视图控制器(用于app登录),如果我检测到已经有用户登录(我已经存储了已经存储的用户的API令牌),那么我将加载一个导航控制器,而不是定义了一个根视图控制器,它是一个表视图控制器。在表视图控制器中,我有一个导航项,其中包含左右栏按钮项。我添加了另一个带有标签的视图控制器,然后我从右侧导航栏按钮项拖动到简单视图控制器以创建一个segue。当我构建和运行应用程序时,这个segue是不起作用的。我还尝试创建一个IBAction并将其挂钩到右侧栏按钮项和NSLog“Hello world”但这不起作用。以下是我如何初始化故事板:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Instantiate the UIStoryBoard
UIStoryboard *initiialStoryBoard = [UIStoryboard storyboardWithName:@"iPhoneStoryboard" bundle:nil];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
// Set the first view controller of the storyboard as the root controller.
User *user = [[User alloc] init];
if ([user token] == nil) {
[self.window setRootViewController: [initiialStoryBoard instantiateInitialViewController]];
} else {
UINavigationController *feedNavigationController = [initiialStoryBoard instantiateViewControllerWithIdentifier:@"feedNavigationController"];
[self.window setRootViewController:feedNavigationController];
}
[self.window makeKeyAndVisible];
}
有人可以建议我做错了什么吗?
答案 0 :(得分:0)
首先,删除方法application:didFinishLaunchingWithOptions:
中的所有代码,然后删除return YES;
。
创建您的故事板,如下图所示。
使用UINavigationController
作为您的切入点。
将您的身份验证视图控制器设置为rootViewController
UINavigationController
使用身份验证视图控制器中的另一个segue到Feed视图控制器,并为其指定segue标识符segueFeed
之后,将以下代码添加到您的身份验证视图控制器:
- (void) awakeFromNib
{
// Set the first view controller of the storyboard as the root controller.
User *user = [[User alloc] init];
if ([user token] == nil)
{
// do nothing because the correct view controller will be shown
}
else
{
// show the feed view controller
[self performSegueWithIdentifier:@"segueFeed" sender:nil];
}
}
现在,如果没有给出令牌,将自动显示认证视图控制器,否则将立即显示馈送视图控制器。此时,您可以添加自己的导航项(如Action 1
和Action 2
),并通过segues将它们与其他视图控制器连接。