自定义单元格UITableView有问题

时间:2011-08-06 00:00:49

标签: iphone objective-c uitableview

我正在尝试添加一个customCell,它只允许我左对齐一个字符串,然后右对齐另一个字符串。在上一个问题中,有人提出了以下建议,但我在使用我的代码时遇到了问题。 Xcode说:RootviewController可能无法响应--contentView,调用[[self contentView] addSubView:item]或[[self contentView] addSubView:rank]会在运行时崩溃我的应用程序

// Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

            UILabel *rank = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 100, 20];
            //Mess around with the rects, I am just merely guessing.
            [rank setTag:5];
            [[self contentView] addSubView:rank];
            [rank release];


            UILabel *item = [[UILabel alloc] initWithFrame:CGRectMake(110, 5, 220, 20];
            //Important
            [item setTextAlignment:UITextAlignmentRight];
            [item setTag:6];
            [[self contentView] addSubView:item];
            [item release];
        }

        UILabel *rank = (UILabel *)[cell viewWithTag:5];
        UILabel *item = (UILabel *)[cell viewWithTag:6];

        rank = @"leftside";
        item = @"rightside";

    }

感谢您的任何想法

2 个答案:

答案 0 :(得分:1)

self这是控制器。您应该将self发送到刚刚创建的单元格,而不是将contentView作为接收者。

答案 1 :(得分:1)

你应该看看

[cell.contentView addSubview:item];
[cell.contentView addSubview:rank];

rank.text = @"leftside";
item.text = @"rightside";

还有一件事需要注意。如果你的UITableView是scrollEnabled,那么cellReusability会出现问题,你的标签会随后滚动而搞乱。我建议您继承UITableViewCells并在布局中添加它们,然后使用CustomUITableViewCells