0

在此处输入图像描述

我有一个应用程序,它有一个 UITableViewController 这是我的设置页面。我正在使用 self.navigationController (使用情节提要 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 设置,所以我没有更改上述两种实现方法中的任何内容。

在我将视图推送到 UITableViewController 的 mainviewcontroller 中,我使用以下代码

Setting *nextController = [[self storyboard] instantiateViewControllerWithIdentifier:@"setting"];
[self presentModalViewController:nextController animated:YES];
Setting *dvc = [[Setting alloc] init];
[self.navigationController pushViewController:dvc animated:YES];

IB中的所有用户界面

由于我已经在 IB 中设置了所有 UI,为什么我需要实现这些方法?至少我可以正确地看到视图。

4

1 回答 1

2

看起来您正在尝试两次初始化同一个 viewController。你不需要alloc] init]追你instantiateViewControllerWithIdentifier.至少,根据我的经验,你不需要。尝试这个:

Setting *nextController = [[self storyboard] instantiateViewControllerWithIdentifier:@"setting"];
[self.navigationController pushViewController:nextController animated:YES];

这会将nextController带有storyBoardID“设置”的“推”从右侧“推”到您现有的NavigationController.

但是,根据我的直觉,我相信您想以模态方式呈现一个设置视图,它有自己的NavigationController. 在这种情况下,请尝试以下代码,它将 Settings 包装ViewController到 aNavigationController中,并以模态方式呈现整个内容,以便您可以在设置中导航:

Setting *nextController = [self.storyboard instantiateViewControllerWithIdentifier:@"setting"];
UINavigationController *navcont = [[UINavigationController alloc] initWithRootViewController:nextController];
navcont.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:navcont animated:YES completion:nil];

或者,您可以在情节提要本身中完成所有这些操作。选择您的设置视图控制器,然后转到编辑器菜单 > 嵌入... > 导航控制器。然后segue从您的按钮到包含设置控制器的导航控制器。将 segue 设置为“Modal”,就完成了。

于 2013-02-04T18:30:19.127 回答