我有一个视图控制器,当单击一个按钮时会显示一个表视图控制器。表视图委托一切正常,表视图显示正常,但在ellForRowAtIndexPath:委托方法中,单元格被实例化并返回,但它没有正确显示。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"alrededor";
alrededorCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[alrededorCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSDictionary *categoria = [[NSDictionary alloc] initWithDictionary: [_categoriasArray objectAtIndex:indexPath.row]];
NSLog(@"categoria %@", categoria);
cell.title.text = [categoria valueForKey:@"title"];
return cell;
}
非常感谢
答案 0 :(得分:2)
为什么要像这样创建你的手机?
if (cell == nil) {
cell = [[alrededorCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
如果它是您自己的自定义单元格,为什么要使用UITableViewCellStyleDefault?
答案 1 :(得分:1)
如果要加载的单元格是UITableViewCell的子类,并且您已使用界面构建器构建单元格,则必须执行以下操作。
在nib文件中删除创建时的视图,添加UITableViewCell并将其类更改为alrededorCell。更改单元格类而不是文件的所有者。当您链接按钮,标签等。一定要将它们链接到单元格而不是文件所有者。同时将单元格uniqueIdentifier设置为alrededor。
在cellForRowAtIndexPath
中- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"alrededor";
alrededorCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:nil options:nil];
for (alrededorCell *view in xib) {
if ([view isKindOfClass:[alrededorCell class]]) {
cell = view;
}
}
}
NSDictionary *categoria = [[NSDictionary alloc] initWithDictionary: [_categoriasArray objectAtIndex:indexPath.row]];
NSLog(@"categoria %@", categoria);
cell.title.text = [categoria valueForKey:@"title"];
return cell;
}