我创建了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;
}
答案 0 :(得分:5)
使用
cell = [self.tableView dequeueReusableCellWithIdentifier:sCellID];
而不是
cell = [tableView dequeueReusableCellWithIdentifier:sCellID];
然后使用故事板的原型单元格。
答案 1 :(得分:1)
您可以通过对UITableViewCell进行子类化来创建自定义单元格。然后,您必须在layoutSubviews中配置单元格的外观。
这并不能解决您想要在Storyboard中设计单元格的问题。我认为将UISearchControl集成到Storyboard中仍然有点笨拙,没有更好的解决方案。