0

我有一个视图控制器,当单击按钮时会显示一个表视图控制器。表格视图委托一切正常,表格视图显示正常,但在 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;

}

非常感谢

4

2 回答 2

2

你为什么要这样创建你的细胞?

if (cell == nil) {
    cell = [[alrededorCell alloc] initWithStyle:UITableViewCellStyleDefault   reuseIdentifier:CellIdentifier];
}

如果是您自己的自定义单元格,为什么要使用 UITableViewCellStyleDefault ?

于 2012-04-19T11:01:48.263 回答
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;

}
于 2012-04-19T12:52:08.380 回答