可能有一个简单的解决方案,但我无法弄明白。
我正在使用故事板作为界面。
我从标签栏控制器开始,但在允许用户使用该应用程序之前,用户必须通过在开始时以模态方式推送的登录视图对自己进行身份验证。
我想在同一个故事板上配置loginview,但我无法找出如何链接故事板上的视图控制器和我的代码。
我做了什么:
没有标签......
答案 0 :(得分:40)
将一个新的UIViewController作为登录视图控制器引入MainStoryboard。在属性检查器中,将标识符更改为LoginViewController(或适当的内容)。然后添加
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:YES];
}
到第一个视图控制器,登录屏幕将从故事板加载并显示。
希望这有帮助。
答案 1 :(得分:6)
Scott Sherwood的回答是我在经过大量搜索后找到的最正确的答案。虽然根据新的SDK(6.1)进行了微小的更改,但presentModalViewController显示已弃用。
以上是对上述答案的非常小的改动。
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
HomeViewController * hvc = [sb instantiateViewControllerWithIdentifier:@"LoginView"];
[hvc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentViewController:hvc animated:YES completion:nil];
答案 2 :(得分:1)
我是这个领域的新手。但是,如果第一个视图控制器是导航视图控制器,并且其rootviewcontroller是一个表视图控制器。如果要在单击单元格时按下ViewViewController之类的视图控制器,并且还想使用导航栏返回到表视图。我推荐这种方式:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *controller = [sb instantiateViewControllerWithIdentifier:@"LoginViewController"];
[self.navigationController pushViewController:controller animated:YES];
}
通过这种方式,您可以进行导航。
顺便说一句,我不知道为什么会出现这样的问题。我想当在代码中创建loginviewcontroller时,它的视图不是故事板中的视图。如果有人知道原因,请告诉我!谢谢!