当我在一个视图控制器中有2个tableviews时,第二个UITableView不会调用cellForRowAtIndexPath

时间:2014-02-09 08:49:34

标签: ios iphone objective-c uitableview

我有一个从xib文件加载的UIView。它有两个UITableView。我想在每个UITableView中显示不同的数据,并决定不使用indexPath.section。

所以考虑到这一点 - 我写了cellForRowAtIndexPath这样的话:

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *UsernameCellIdentifier = @"UsernameCell";
    static NSString *PasswordCellIdentifier = @"PasswordCell";
    static NSString *mailListTableViewCellIdentifier = @"Cell";
    if (tableView == self.maillistTableview ){

        UITableViewCell *cell = [self.maillistTableview dequeueReusableCellWithIdentifier:mailListTableViewCellIdentifier];
        if (!cell){

            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:mailListTableViewCellIdentifier];
        }


        cell.textLabel.text = @"Cells";
        return cell;
    }


    if (tableView == self.tableView){

        if(indexPath.row == 0) {

        self.usernameCell = (BBUsernameTableViewCell *)[tableView dequeueReusableCellWithIdentifier:UsernameCellIdentifier];

        if(!self.usernameCell) {

            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:UsernameCellIdentifier owner:self options:nil];

        return self.usernameCell;
    }

    return nil; 
}

当我在cellForRowAtIndexPath上设置断点时,它仅针对第一个表格视图调用两次:self.tableView

我在cellForRowAtIndexPath中添加了一个NSLog来查看它正在查看哪个tableView,它从不“检查”self.maillistTableView

我已将该UITableView的代理连接到文件所有者。

有趣的是numberOfRowsInSection它适用于self.maillistTableView

谁能告诉我这里哪里出错?

2 个答案:

答案 0 :(得分:2)

由于numberOfRowsInSection正在运行,请检查它的返回计数。如果数据源数组计数为零,则cellForRowAtIndexPath将无效。

答案 1 :(得分:0)

也许self.maillistTableView不会调用reloadData