我有这个问题,我一直坐着。我放在我的UIView中的tableView没有填充,有时我得到一个异常。
// .h
@interface List : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
UITableView *mTableView;
}
@property (nonatomic, readonly) IBOutlet UITableView *tableView;
//------------------------------
// .m
@synthesize tableView=mTableView;
//Further I do the normal viewDidUnload stuff = nill
//And the numberOfSectionsInTableView, numberOfRowsInSection and
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"cellForRowAtIndexPath:");
NSLog(@"Table View: %@",[tableView description]);
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = @"Hi";
// Configure the cell...
return cell;
}
我得到了输出:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<List 0x6a78000> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key tableView.'
或只是一个空单元格列表,甚至不是“Hi”作为标题。
答案 0 :(得分:1)
我几乎可以肯定发生此错误是因为您未正确连接UITableView
。您应该删除ivar mTableView,IB
出口属性tableView和@synthesize
。然后在IB
中删除一个OUTLET。然后,通过从界面构建器拖动它再次连接它,并且不要在类中输入任何代码。 Xcode会为你做所有的事情(创建一个属性,合成它并做MM事情)
答案 1 :(得分:0)
确保在Interface Builder
中设置了表的委托和数据源答案 2 :(得分:0)
如果您对IBOutlet没有做任何事情,为什么还要这样做?方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
由nib-File调用,用于在nib.Your类中创建的tableView实例,因为此实例的委托接收此调用。作为nib中tableView的委托就是你所需要的。