12
SettingsViewController *viewController = [[SettingsViewController alloc] init];
    [[self navigationController] pushViewController:viewController animated:YES];

在 NavigationController 中使用此代码时,显示的场景只是一个黑屏。在情节提要中,它会显示内容,但不会显示在手机上。

4

7 回答 7

18

尝试这个:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
SettingsViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"setting"];
[self.navigationController pushViewController:viewController animated:YES];

将 settingviewcontroller 的标识符设置为“setting”

于 2013-02-18T04:12:37.807 回答
1

用这个:

SettingsViewController *viewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]]; 
[[self navigationController] pushViewController:viewController animated:YES];
于 2013-02-18T03:30:35.143 回答
1

一种简单的方法是使用情节提要进行实例化。你必须给你的 viewcontroller 一个 Storyboard ID,然后使用下面的代码:

YourView *view = [self.storyboard instantiateViewControllerWithIdentifier:@"YourViewID"];

完成后,只需按下:

[[self navigationController] pushViewController:view animated:YES];

希望这可以帮助。

于 2015-02-15T18:00:39.443 回答
0

尝试这个

  SettingsViewController *viewController = [[SettingsViewController alloc]initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]]; 
  [self.navigationController pushViewController:viewController animated:YES];
于 2013-02-18T08:37:43.520 回答
0

我通过目标视图控制器的自定义初始化解决了这个问题。

您的目标视图控制器:

-(id) initWithSender:(UINavigationController*)sender
{
        self=[sender.storyboard instantiateViewControllerWithIdentifier:@"DestinationVCIdentifier"];
    if (self) {
        //custom initialisation
    }
    return self;
}

并使用它:

DestinationVC *viewController = [[SettingsViewController alloc] initWithSender:self.navigationController];
[[self navigationController] pushViewController:viewController animated:YES];
于 2014-07-20T11:48:06.113 回答
0

因此您可以按照每个人的建议使用 xib 或故事板的名称进行初始化,这是有效的。

虽然如果您使用故事板并且您的初始视图控制器在故事板上,他们可能宁愿执行以下操作,

// Method in your initial viewcontroller 
- (void)youPushMethod { 

// Name your segue on your storyboard, e.g. SegueIndentifier 
[self performSegueWithIdentifier:@"SegueIndentifier" sender:self];
}

然后,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

     if ([segue.identifier isEqualToString:@“SegueIndentifier"]) {
     SettingsViewController *settingsViewController= segue.destinationViewController;
    }
}
于 2016-07-05T11:32:09.377 回答
0

嗨,您必须将顶栏属性(导航栏)设置为为视图控制器推断。就我而言,我之前将顶部栏设置为“半透明导航栏”

通常会发生这种情况,您从模态视图控制器执行 segue。

于 2016-07-05T08:37:32.383 回答