我有一个非常奇怪的问题...我有一个应用程序,它有一个UITableViewController,这是我的设置页面。我正在使用self.navigationController(使用storyboard ID)使用presentModalViewController推送UITableViewController。但每次我试图看到那个页面......它显示异常......在阅读了几篇文章之后我试着实现两种方法
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
return 3;
}
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [super tableView:tableView
cellForRowAtIndexPath:indexPath];
return cell;
}
**my .h File**
@interface Setting : UITableViewController<UITableViewDelegate,UITableViewDataSource>
我已经完成了IB中的所有UI设置,因此id在上面两个实现的方法中没有改变任何内容。请帮帮我。
在mainviewcontroller中,我将视图推送到UITableViewController,我使用下面的代码
Setting *nextController = [[self storyboard] instantiateViewControllerWithIdentifier:@"setting"];
[self presentModalViewController:nextController animated:YES];
Setting *dvc = [[Setting alloc] init];
[self.navigationController pushViewController:dvc animated:YES];
由于我已经在IB中设置了所有UI,为什么我需要实现这些方法....至少我可以正确地看到视图。
答案 0 :(得分:2)
看起来你正在尝试两次初始化相同的viewController。 alloc] init]
之后您不需要instantiateViewControllerWithIdentifier.
至少,根据我的经验,您不需要Setting *nextController = [[self storyboard] instantiateViewControllerWithIdentifier:@"setting"];
[self.navigationController pushViewController:nextController animated:YES];
。试试这个:
nextController
这会将storyBoardID
的{{1}}“设置”从右侧“推送”到您现有的NavigationController
。
然而,使用我的直觉,我相信你想以模态方式呈现一个设置视图,它有自己的NavigationController
。在这种情况下,请尝试使用此代码将设置ViewController
包装到NavigationController
中,并以模态方式呈现整个内容,以便您可以在设置中导航:
Setting *nextController = [self.storyboard instantiateViewControllerWithIdentifier:@"setting"];
UINavigationController *navcont = [[UINavigationController alloc] initWithRootViewController:nextController];
navcont.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:navcont animated:YES completion:nil];
或者,您可以在Storyboard本身中完成所有这些操作。选择您的设置视图控制器,然后转到编辑器菜单&gt;嵌入...&gt;导航控制器。然后从按钮向保留设置控制器的导航控制器发出segue
。将segue设置为“Modal”,你就完成了。