带有自定义单元格的UISearchDisplayController

时间:2014-08-13 20:31:57

标签: ios objective-c uitableview uisearchdisplaycontroller custom-cell

我在storyboard设计了一个自定义单元格,它位于UITableViewController内,可以自定义单元格。

现在,我正在尝试在UITableViewController上使用同一个单元格UISearchDisplayController,但它无效。

这是我的方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object {

    static NSString *CellIdentifier = @"CustomCell";

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier ];
    }

    cell.titleLabel.text = object[@"title"];
    cell.subtitleLabel.text = object[@"subtitle"];

    return cell;
}

它只返回白色的常规单元格,如果我使用默认的cell.textLabel.text,它会显示我的对象。

3 个答案:

答案 0 :(得分:0)

试试这个,在故事板上设置标记

http://i.stack.imgur.com/eVXPE.jpg

image from AppCoda

并改变你的方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object {

static NSString *CellIdentifier = @"CustomCell";

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier ];
}

//Change this - START

UILabel *titleLabel = (UILabel *)[cell viewWithTag:100];
UILabel *subtitleLabel = (UILabel *)[cell viewWithTag:101];

titleLabel.text = object[@"title"];
subtitleLabel.text = object[@"subtitle"];

//Change this - END

return cell;
}

答案 1 :(得分:0)

如果您在故事板上的桌面视图中创建了自定义单元格,我不知道您是否可以在另一个表格视图中使用它,或者在故事板上的新tableView中重新创建自定义单元格,或者单独制作自定义单元格。 xib仅用于单元格,并使用类似..

的方法将它们加载到cellForRow方法中
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(!cell)
{
    [tableView registerNib:[UINib nibWithNibName:@"MyCustomCellNib" bundle:[NSBundle mainBundle] forCellReuseIdentifier:CellIdentifier];
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
}

答案 2 :(得分:0)

或者甚至更好,您只需对现有代码进行一些小改动,并希望它能够正常工作:

自:

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

要:

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

Swift

自:

var cell = tableView.dequeueReusableCell(withIdentifier: CellIdentifier) as! CustomCell

致:

var cell = self.tableView.dequeueReusableCell(withIdentifier: CellIdentifier) as! CustomCell

Credits