SettingsViewController *viewController = [[SettingsViewController alloc] init];
[[self navigationController] pushViewController:viewController animated:YES];
在 NavigationController 中使用此代码时,显示的场景只是一个黑屏。在情节提要中,它会显示内容,但不会显示在手机上。
SettingsViewController *viewController = [[SettingsViewController alloc] init];
[[self navigationController] pushViewController:viewController animated:YES];
在 NavigationController 中使用此代码时,显示的场景只是一个黑屏。在情节提要中,它会显示内容,但不会显示在手机上。
尝试这个:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
SettingsViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"setting"];
[self.navigationController pushViewController:viewController animated:YES];
将 settingviewcontroller 的标识符设置为“setting”
用这个:
SettingsViewController *viewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]];
[[self navigationController] pushViewController:viewController animated:YES];
一种简单的方法是使用情节提要进行实例化。你必须给你的 viewcontroller 一个 Storyboard ID,然后使用下面的代码:
YourView *view = [self.storyboard instantiateViewControllerWithIdentifier:@"YourViewID"];
完成后,只需按下:
[[self navigationController] pushViewController:view animated:YES];
希望这可以帮助。
尝试这个
SettingsViewController *viewController = [[SettingsViewController alloc]initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:viewController animated:YES];
我通过目标视图控制器的自定义初始化解决了这个问题。
您的目标视图控制器:
-(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];
因此您可以按照每个人的建议使用 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;
}
}
嗨,您必须将顶栏属性(导航栏)设置为为视图控制器推断。就我而言,我之前将顶部栏设置为“半透明导航栏”
通常会发生这种情况,您从模态视图控制器执行 segue。