2

我创建了 TableViewController 子类并将其与情节提要一起使用。我创建了 1 个动态原型并在子类中使用了它的标识符值。它工作并显示单元格,就像它在情节提要中显示的那样。但是当我添加 searchDisplayController 并将 TableViewController 作为委托和数据源时,它会显示正确的搜索结果,但 TableViewCells 的格式不再遵循故事板原型。我在下面使用的代码。我怎样才能让它遵循原型?

- (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;
}
4

2 回答 2

5

利用

cell = [self.tableView dequeueReusableCellWithIdentifier:sCellID];

代替

cell = [tableView dequeueReusableCellWithIdentifier:sCellID];

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

于 2012-05-30T04:11:50.217 回答
1

您可以通过子类 UITableViewCell 来制作自定义单元格。然后你必须在 layoutSubviews 中配置单元格的外观。

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

于 2012-02-20T08:04:24.230 回答