如何初始化自定义tableview单元格

时间:2013-07-11 16:15:08

标签: iphone uitableview uistoryboardsegue

我正在使用故事板和自定义单元格。我正在尝试搜索。当tableviewcontroller加载时,它工作正常并加载自定义单元格,一旦我输入搜索字符,返回的单元格是UITableViewCellStyleDefault,我只能设置标签,我不知道为什么它没有选择自定义单元格。有人可以请帮助。

抱歉,重复this,但我无法弄清楚它是如何起作用的。

我正在使用此代码。

    static NSString *CellIdentifier = @"memberCell";
    MemberCell *cell = (MemberCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];        
    NSDictionary *item = self.searchList[indexPath.row];

    if (cell == nil) {
      cell = [[MemberCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier];        
     }

     cell.memberFullName.text = [item[@"full_name"] uppercaseString] ;
     cell.memberPosition.text =  [item[@"title"] length] < 1 ? [NSString stringWithFormat:@"%@",  item[@"districts"]] : [NSString stringWithFormat:@"%@, %@", item[@"title"], item[@"districts"]];
     cell.memberRoom.text = [NSString stringWithFormat:@"Rm %@", item[@"room_number"] ];
    [cell.memberImage setImageWithURL:[NSURL URLWithString:item[@"image_thumb"]]
                 placeholderImage:[UIImage imageNamed:@"placeholder"]];

迪帕克

1 个答案:

答案 0 :(得分:1)

您说“我正在尝试搜索” - 您的意思是您添加了UISearchDisplayController并且您试图让自定义单元格显示在结果表视图中吗?如果是这样,您有两个选择:

  1. tableView:cellForRowAtIndexPath:方法中,您需要从主表视图中取出自定义单元格,而不是搜索结果表格视图。当您在一个故事板中的tableview中定义一个单元格时,故事板只会将其注册到该表格视图,因此它不会从任何其他表格视图中出现(我在2013年WWDC上负责故事板的苹果工程师确认了这一点)。所以,代码看起来像这样:

    MemberCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

  2. 将自定义单元格定义移动到独立的xib文件中(创建一个空的XIB,从对象列表中拖动UITableViewCell并根据需要进行配置)。定义自定义单元类并将其配置为xib中的单元类,然后使用registerNib:forCellReuseIdentifier:

  3. 手动为两个表视图注册该单元类型