如何用导航控制器呈现视图模型?在对象C中

时间:2016-02-14 10:16:14

标签: ios objective-c

我知道之前已经问过这个问题,但经过几次搜索后我没有找到我的查询的答案这里的情景是以模态形式呈现视图后,模拟器给我黑屏,如下所述: screen shot

这是我正在使用的代码:

    NSString *username = self.usernameTf.text;
    NSString *password  = self.passwordTf.text;
    if ([username isEqualToString:@"zakaria"] || [password     isEqualToString:@"zakaria"]) {
        adminViewController *avc = [[adminViewController alloc] init];
        UINavigationController *nav  = [[UINavigationController alloc]    initWithRootViewController:avc];
          [self presentViewController:nav animated:YES completion:nil];
    }

我已经尝试过这个解决方案Modal View with Navigation Controller 但我得到了同样的结果任何帮助人

  

针对给定的解决方案进行了编辑   我试过你的解决方案,但这是结果   enter image description here这是我使用的故事板

enter image description here

3 个答案:

答案 0 :(得分:2)

好的,你正在使用故事板。这意味着您的视图控制器init不会创建视图。所以你应该给你的adminViewController提供Storyboard Id。 然后你应该替换你的adminViewController init

adminViewController *avc = [[adminViewController alloc] init];

使用

adminViewController *avc =   [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"adminViewController"];

然后它应该可以正常工作。

但是,如果您将故事板ID提供给导航控制器,则无需初始化任何导航控制器。故事板将创建导航和adminViewController。

[enter image description here]

答案 1 :(得分:0)

您必须首先将UINavigation控制器放在故事板中,只需在您调用此方法的ViewController上

NSString *username = self.usernameTf.text;
        NSString *password  = self.passwordTf.text;
        if ([username isEqualToString:@"zakaria"] || [password     isEqualToString:@"zakaria"]) {
            adminViewController *avc = [[adminViewController alloc] init];

              [self presentViewController:avc animated:YES completion:nil];
        }

然后这一切都很好。

答案 2 :(得分:0)

一切都很好......您需要将导航控制器作为您设计的根目录。目前您以root用户身份登录。由于登录是root,因此您的设计没有导航控制器,因此您的代码无效。

简而言之,将导航视图控制器设为 是初始视图控制器

即使您不需要代码中的以下行。

UINavigationController *nav  = [[UINavigationController alloc]    initWithRootViewController:avc];