自定义TableView并在iOS中使用didSelectRowAtIndexPath

时间:2012-07-30 10:03:56

标签: iphone objective-c ios ios5 uinavigationcontroller

我已按照此Custom UITableViewCell

创建了自定义TableView

我创建了一个CustomerCell,然后在ViewController中使用它:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *uniqueIdentifier = @"cutomerCell";

    CustomerCell *cell = nil;
    cell = (CustomerCell *) [self.tableview dequeueReusableCellWithIdentifier:uniqueIdentifier];

    Customer *customer = [self.customers objectAtIndex:[indexPath row]];
    if(!cell)
    {
        NSArray *topLevelObject = [[NSBundle mainBundle] loadNibNamed:@"CustomerCell" owner:nil options:nil];
        for(id currentObject in topLevelObject)
        {
            if([currentObject isKindOfClass:[CustomerCell class]])
            {
                cell = (CustomerCell *) currentObject;
                break;
            }
        }
    }
    cell.nameLabel.text = customer.name;

    return cell;
}

一切正常。但接着我开始下一个链接UINavigationController

问题在于我使用这种方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@ "hi");   
}

当我在TableView中单击某个项目时,没有任何反应。可能是因为我实现了Custom TableView然后我无法使用didSelectRowAtIndexPath方法,但我该如何解决?

3 个答案:

答案 0 :(得分:1)

您获得的错误与您的笔尖有关,而与您的UITableView无关。您应该检查客户详细信息类的视图是否与笔尖中的所有者相关联。这就是为什么一旦你尝试使用

就会崩溃的原因
[self.navigationController pushViewController:self.customerDetail animated:YES];

答案 1 :(得分:0)

你是否设置了代表? tableView.delegate = self;我猜你应该没问题。

答案 2 :(得分:0)

对表视图进行子类化不应该导致这样的问题 - 根据定义,子类除了超类之外还会做更多的事情。您似乎只设置了数据源而是委托:

tableView.delegate = self;