iOS:来自nib的自定义UITableViewCell没有reuseIdentifier?

时间:2013-06-13 03:42:33

标签: ios uitableview

我有一个从笔尖加载的自定义UITableViewCell。我可以通过执行以下步骤将其用于使用reuseIdentifier进入我的应用程序:

1)将Nib中的重用标识符设置为“CustomCellIndentifier”

2)注册笔尖:

[[self tableView] registerNib:[UINib nibWithNibName:@"CustomCell" bundle:nil] forCellReuseIdentifier:@"CustomCellIndentifier"];

3)在tableview中返回单元格:cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellIndentifier"];
     return cell;
}

我的问题是,如何返回没有重用标识符的单元格?我有一个小桌子,我不希望重复使用该单元格(如果我滚动,它会弄乱我在单元格中的一些子视图)。

我尝试过将上述3个重用标识符设置为nil的组合,它们都会产生错误。

我也在下面尝试了这个,但是如果我滚过单元格并且我收到错误消息“没有重复使用表格单元的索引路径”,则单元格内容会重置:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];
     if (cell == nil) {
           NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
           cell = [topLevelObjects objectAtIndex:0];
     }

     return cell;
}

1 个答案:

答案 0 :(得分:-1)

我认为这不是一个好方法,但根据您的要求使用此:

init方法写在CustomCell

- (id)init
        NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"QuestionOptionCell" owner:self options:nil];
        CustomCell *theEditView = [nibObjects objectAtIndex:0];
        self = theEditView;
        theEditView = nil;
        return self
    }


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     CustomCell *cell = [[CustomCell alloc] init];
     if (cell == nil) {
           NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
           cell = [topLevelObjects objectAtIndex:0];
     }

     return cell;
}