无法在navigationController中从1st显示第二个UIViewController

时间:2014-02-23 15:34:23

标签: ios objective-c uiviewcontroller

我有一个主故事板,其设置如下

- 导航控制器(是初始视图控制器)

----表视图控制器(根视图控制器) - #1

---- UI视图控制器(segue类型是来自Nav.Ctrl的模态) - #2

#1连接到自定义类

#2连接到不同的自定义类

在#1内部,当一个按钮从一个表格单元格中点击时...我想调用#2来完成某些事情并希望回来(通过单击后退按钮)到#1

我尝试了几个不同的代码,没有运气!

下面的代码会生成黑屏,但Navbar info包含返回主页的选项

vcControl2 *popup = [[vcControl2 alloc] init];
popup.modalPresentationStyle = UIModalPresentationFormSheet;
[self.viewController.navigationController pushViewController:popup animated:YES];

以下代码会生成带有空白导航栏信息的黑屏

vcControl2 *vc = [[vcControl2 alloc] initWithNibName: nil bundle:nil ] ;
UINavigationController * navcontroller = [[UINavigationController alloc] initWithRootViewController:vc];
[self.viewController presentModalViewController: navcontroller animated: YES];

下面的代码会生成黑屏,没有Navbar信息

vcControl2 *popup = [[vcControl2 alloc] init];
popup.modalPresentationStyle = UIModalPresentationFormSheet;
[self.viewController presentModalViewController:popup animated:YES];

有什么想法?


我已经通过以下方法解决了这个问题,并在此处为未来用户提供。

在storyboard上,选择了Table View Controller(根视图控制器)中可用的Prototype单元格 - #1

点击并创建一个风格为“Push”的“storyboard segue”,并将其命名为“Detail”

在我的代码中,我已经在下面成功调用了#2(UIVwCtrl)

[self performSegueWithIdentifier:@"Detail" sender:self]; 

1 个答案:

答案 0 :(得分:0)

如果您使用的是Storyboard,则应使用 instantiateViewControllerWithIdentifier 方法加载视图控制器:

YourViewControllerClass *popup = [[UIStoryboard storyboardWithName:@"YourStoryboardName" bundle:nil] instantiateViewControllerWithIdentifier:@"YourPopupViewControllerID"];
popup.modalPresentationStyle = UIModalPresentationFormSheet;

[self presentModalViewController:popup animated:YES];

请注意方法:

+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil

将故事板名称不带文件扩展名。