0

好的,所以我完成了一个教程,让我以这种方式从 appDelegate.m 文件填充 TableViewController。

UINavigationController *navController = (UINavigationController *) self.window.rootViewController; MasterViewController *masterController = [navController.viewControllers objectAtIndex:0]; masterController.bugs = bugs;

我正在尝试自己的小应用程序进行一些练习,但我这样做的方式是我的 TableViewController 不是 rootViewController。这是之后的下一个视图。我正在使用情节提要来创建我的 GUI,不确定这是否需要了解。

基本上我的对象有一个成员是和数组,我想在 appDelegate 文件中创建对象,并用我的对象中的数组填充 TableViewController。

以下是一些额外的细节:

有人建议我将 0 索引替换为 1 但我收到此异常错误

2012-10-07 21:34:23.785 EasyBudget[5257:f803] * 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[__NSArrayI objectAtIndex:]:索引 1 超出范围 [0 .. 0]” *首先抛出呼叫堆栈:( 0x14b5022 0xeb5cd6 0x14a1644 0x20c8 0x16386 0x17274 0x26183 0x1139fef5 0x1139fef5 0x1489195 0x139fef5 0x139fef5 0x1489195 0x132ff2 0x1489195 0x13edff2 0x13ech8da 0x13ebd84 0x13ebc9b 0x16c65 0x18626 0x12fd 0x11065 0x1)终止称为抛出异常

我理解异常的原因。出于某种原因,我的导航控制器中保存不同视图的数组只有一个 0 索引。我只是不确定如何解决这个问题。我以 Navigation Controller -> ViewController(这是我的根视图关系)-> Table View Controller(这是我要访问的视图)的方式设置我的故事板。我从根视图控制器向表视图控制器添加了一个带有 push segue 的条形按钮项。当我在添加代码之前构建和运行一切正常时,我可以按下我的按钮,它从我的视图控制器转到我的表视图控制器,我能够按下导航栏自动制作的后退按钮以返回我的视图控制器。我希望这一切都正确完成。任何更多的帮助将不胜感激。

4

1 回答 1

0

好的,所以我完成了一个教程,让我以这种方式从 appDelegate.m 文件填充 TableViewController。

这对于“教程”来说是有意义的,因为表视图控制器是导航控制器的根视图控制器,所以它总是可用的。我猜点击表格中的一行可能会导致应用程序转换到与点击的行相关的详细视图控制器,并且该详细视图控制器可能是由表视图控制器设置的。

您可以在您的应用程序中遵循相同的模式:让您的应用程序委托执行任何必要的操作来设置导航控制器的根视图控制器,然后让控制器设置它转换到的任何视图控制器。由于您使用的是故事板,因此最好在视图控制器的-prepareForSegue:sender:方法中执行此操作——您可以在该方法中获取 segue 的目标视图控制器并传递新控制器所需的任何数据(即您的表视图控制器)去做这件事。

于 2012-10-08T03:19:39.657 回答