UITableView没有从UIView填充

时间:2012-02-06 14:49:27

标签: objective-c uiview uitableview delegates

我有这个问题,我一直坐着。我放在我的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”作为标题。

3 个答案:

答案 0 :(得分:1)

我几乎可以肯定发生此错误是因为您未正确连接UITableView。您应该删除ivar mTab​​leView,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的委托就是你所需要的。