Model view controller 在master/detail应用程序的masterview控制器中动态发布uitableview

Model view controller 在master/detail应用程序的masterview控制器中动态发布uitableview,model-view-controller,ios5,uitableview,master-detail,Model View Controller,Ios5,Uitableview,Master Detail,在基于master/detail应用程序模板创建项目后,我尝试向masterview提供内容 我基本上有一个模型,它包含了我以后可能会更改的所有数据。我希望通过提供每个节的行数和具有此模型的节数来自动提供tableview的内容 我通过覆盖以下两个功能来实现这一点: -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -(NSInteger)numberOfSection

在基于master/detail应用程序模板创建项目后,我尝试向masterview提供内容

我基本上有一个模型,它包含了我以后可能会更改的所有数据。我希望通过提供每个节的行数和具有此模型的节数来自动提供tableview的内容

我通过覆盖以下两个功能来实现这一点:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
但是,如果我没有编辑主视图控制器-主场景的情节提要,使其在节中反映的节和行的数量比我的模型更多,则会出现NSRangeException异常

e、 g:我把故事板留给了主场景,一节一行。如果我在numberOfRowsInSection函数中返回2,我的程序将在运行时崩溃,并出现以下NSRangeExceptionError错误:

2011-10-10 14:38:53.042 sample_project[3636:f803] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

*** First throw call stack:

(0x13bb052 0x154cd0a 0x13a7674 0x432805 0x24227a 0x1ed548 0x1ef722 0x9f7c7 0x9f2c1 0xa228c 0xa6783 0x51301 0x13bce72 0x1d6592d 0x1d6f827 0x1cf5fa7 0x1cf7ea6 0x1d8330c 0x114c6 0x11bd6 0x20743 0x211f8 0x14aa9 0x12a5fa9 0x138f1c5 0x12f4022 0x12f290a 0x12f1db4 0x12f1ccb 0x112a7 0x12a9b 0x25e2 0x2555)

terminate called throwing an exceptionsharedlibrary apply-load-rules all

Current language:  auto; currently objective-c

(gdb) 

有人看到这种行为的原因吗?我错过什么了吗?我是否需要进行一些额外的初始化,以便在控制器的didLoad函数中为tableview设置默认大小?

我发现默认的tableview内容属性设置为静态。您可以将其更改为动态原型。您需要为单元格提供一个标识符:但我不确定这是如何使用的。这解决了我上面提到的崩溃问题。

您的更多代码实际上会有所帮助,但无论如何

IOS5中的UIKit中有一些更改,请检查以下链接,这样您就不会与代码中的任何其他地方发生冲突

nsindepath中也有变化,请特别检查。根据苹果的文件

NSIndexPath的indexPathForRow:instation:、section和row方法现在使用NSInteger而不是NSInteger,以便这些类型与UITableView上定义的方法匹配

如果你找到了答案,请分享