好吧,我已经阅读了这些帖子和教程,但是他们让我更加困惑:
我想要的是做到这一点:
一开始,我的应用程序有一个表格视图。当我按一行时,它应该带我到另一个有标签的视图。
到目前为止我做的是:
1)创建了一个导航控制器,还有我的tableview。当我按一行时,会打开一个视图。在该视图中(使用自己的.xib文件),我添加了标签栏项。
你可以在这里看到图片:
但是现在,我不知道在按下标签栏项目时如何制作它,以打开新视图。我试图将我的视图嵌入控制器,但我不能。
2)然后我尝试了这个: 像以前一样拥有我的导航控制器,我在故事板中添加了一个标签栏控制器,如图所示:
但我无法连接它们。我的第一个观点是“SkiCenter”课程,我使用的代码是:
SkiCenter *myDetViewCont = [[SkiCenter alloc] initWithNibName:@"SkiCenter" bundle:[NSBundle mainBundle]];
myDetViewCont.ski_center=[centers objectAtIndex:indexPath.row];
[self.navigationController pushViewController:myDetViewCont animated:YES]; // "Pushing the controller on the screen"
[myDetViewCont release]; // releasing controller from the memory
myDetViewCont = nil;
我得到的SIGBRT说明了一些关于“SkiCenter”的.nib文件。
你能建议用1或2溶液吗?
只是为了让它更清晰: 解决方案1: 按下该行会让我看到一个名为skicentermain的uiview。我添加了几个tabbaritems,但我不知道如何让它们打开新视图。
溶剂2: 插入了tabbar控制器。它的第一个标签是SkiCenter。但是当按下行时,我得到一个sigbart错误。它说了一些关于SkiCenter的nib文件。
答案 0 :(得分:1)
如果您决定使用故事板,您只需将标识符从attributes inspector
添加到任何视图控制器,然后使用其id进行实例化。
UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
[[self navigationController] pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"ViewControllerID"] animated:YES];
答案 1 :(得分:0)
您似乎错误地声明了*myDetViewCont
。你打电话给你的笔尖SkiCenterMain,而不是SkiCenter。另外,SkiCenterMain究竟是什么?那是一个UITabBarController吗?
//SkiCenter *myDetViewCont = [[SkiCenter alloc] initWithNibName:@"SkiCenter" bundle:[NSBundle mainBundle]];
SkiCenter *myDetViewCont = [[SkiCenter alloc] initWithNibName:@"SkiCenterMain" bundle:[NSBundle mainBundle]];