好的,所以我做了一个教程,让我以这种方式从appDelegate.m文件中填充TableViewController。
UINavigationController *navController = (UINavigationController *) self.window.rootViewController;
MasterViewController *masterController = [navController.viewControllers objectAtIndex:0];
masterController.bugs = bugs;
我正在尝试自己的小应用程序进行一些练习,但我正在做的方式我的TableViewController不是rootViewController。这是之后的下一个观点。我正在使用故事板来创建我的GUI,不确定是否需要了解它。
基本上我的对象有一个成员和数组,我想在appDelegate文件中创建对象,并用我对象中的数组填充TableViewController。
以下是一些额外的细节:
我做的是被建议并用1代替0索引但是我得到了这个异常错误
2012-10-07 21:34:23.785 EasyBudget [5257:f803] *由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [__ NSArrayI objectAtIndex:]:index 1超出界限[0 .. 0]' * 第一次抛出调用堆栈: (0x14b5022 0xeb5cd6 0x14a1644 0x20c8 0x16386 0x17274 0x26183 0x26c38 0x1a634 0x139fef5 0x1489195 0x13edff2 0x13ec8da 0x13ebd84 0x13ebc9b 0x16c65 0x18626 0x1efd 0x1e65 0x1) 终止调用抛出异常
我理解异常的原因。由于某种原因,我的导航控制器保存不同视图的Array只有一个0索引。我只是不确定如何解决这个问题。我按照导航控制器的方式设置我的故事板 - > ViewController(这是我的根视图关系) - >表视图控制器(这是我正在尝试访问的视图)。我添加了一个条形按钮项目,从我的根视图控制器到表视图控制器的push segue。当我在添加代码之前构建并运行时,我可以按下我的按钮,它从我的视图控制器转到我的表视图控制器,我能够按下导航栏自动生成的后退按钮返回到我的视图控制器。我希望这一切都正确完成。任何更多的帮助将不胜感激。
答案 0 :(得分:0)
好的,所以我做了一个让我填充的教程 以这种方式从appDelegate.m文件中获取TableViewController。
这对于“教程”是有意义的,因为表视图控制器是导航控制器的根视图控制器,所以它总是可用的。我猜测在表中点击一行可能会导致应用程序转换到与点击行相关的详细视图控制器,并且该详细视图控制器可能由表视图控制器设置。
您可以在应用中遵循相同的模式:让您的应用委托执行设置导航控制器的根视图控制器所需的任何操作,然后让 控制器设置它转换为的任何视图控制器。由于您正在使用故事板,因此在视图控制器的-prepareForSegue:sender:
方法中,一个好的地方就是 - 您可以在该方法中获取segue的目标视图控制器并传递新控制器所需的任何数据(即你的表视图控制器)做的事情。