如何使用Storyboard Dynamic Prototypes UITableViewCell格式化SearchDisplayController结果

时间:2012-02-19 00:48:10

标签: objective-c ios storyboard searchdisplaycontroller

我创建了TableViewController子类并将其与故事板一起使用。我创建了1个动态原型并在子类中使用了它的Identifier值。它工作并显示故事板中显示的单元格。但是当我添加searchDisplayController并使TableViewController成为委托和数据源时,它会显示corrct搜索结果,但TableViewCells的格式不再遵循storyboard原型。我在下面使用的代码。我怎样才能跟上原型?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Contact Cell";
    static NSString *sCellID = @"Contact Cell";
    UITableViewCell *cell;
        if (tableView == self.searchDisplayController.searchResultsTableView) {
            cell = [tableView dequeueReusableCellWithIdentifier:sCellID];
            if (cell == nil) 
            {            
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:sCellID];
            }
        }
        else
        {
            cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
            if (cell == nil) 
            {            
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
            }
        }


    // ask NSFetchedResultsController for the NSMO at the row in question
    Contact *contact = [self.fetchedResultsController objectAtIndexPath:indexPath];
    // Then configure the cell using it ...
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.imageView.image = [UIImage imageNamed:@"1234_profile.png"];
    cell.textLabel.text = [contact.lastName stringByAppendingFormat:@", %@",contact.firstName];
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@, %@", contact.occupation, contact.companyName];

    return cell;
}

2 个答案:

答案 0 :(得分:5)

使用

cell = [self.tableView dequeueReusableCellWithIdentifier:sCellID];

而不是

cell = [tableView dequeueReusableCellWithIdentifier:sCellID];

然后使用故事板的原型单元格。

答案 1 :(得分:1)

您可以通过对UITableViewCell进行子类化来创建自定义单元格。然后,您必须在layoutSubviews中配置单元格的外观。

这并不能解决您想要在Storyboard中设计单元格的问题。我认为将UISearchControl集成到Storyboard中仍然有点笨拙,没有更好的解决方案。