UITableViewCell问题并检查点击次数

时间:2012-10-20 22:43:57

标签: iphone ios uitableview

所以我使用uitableview来显示多个图像和标签。我希望能够检查单击的单元格标签的文本,以便我可以识别单击哪一个。

我这样做的原因是因为我想对一个单击的单元格执行不同的操作,而对另一个单元格执行不同的操作。

这是我填充单元格(来自原型单元格)的方法,使用名为CustomCell的类中的单元格defenition

//tableview datasource delegate methods
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return cellIconNames.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath{

static NSString *CellIdentifier = @"Cell";

cellIconName = [cellIconNames objectAtIndex:indexPath.row];


NSString *cellIconImageName = [[self cellIconImages] objectAtIndex:[indexPath row]];

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];


if(cell == nil){
    cell = [[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.rightLabel.text = [cellIconNames objectAtIndex:indexPath.row];
cell.carrierImage.image = [UIImage imageNamed:cellIconImageName];
cell.urlString = [cellIconNames objectAtIndex:indexPath.row];

return cell;
}

我正在检查点击哪一个的方法是这样做:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;{

CustomCell *cell = (CustomCell*)[tableView cellForRowAtIndexPath:indexPath];
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.google.com"]];

if ([cell.urlString isEqualToString:@"Aetna"]) {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.aetna.com"]];
}else if([cell.urlString isEqualToString:nil]){
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.google.com"]];
}
NSLog(@"cell was clicked %@", cell);
}

当我点击一个单元格时,没有任何反应。现在我已经制作了NSLOG,以便确保正确读取单元格。

我也注释掉了我的测试代码行,我将if else语句注释掉了,只运行了一行注释代码,没有任何反应。

请帮助我,我不知道出了什么问题:/

4 个答案:

答案 0 :(得分:1)

尝试将URL方法放入字符串中(例如http://)。

答案 1 :(得分:0)

只需仔细检查您是否已将UITableViewController添加为UITableViewDelegate并以编程方式或在Interface Builder中将委托连接回控制器?

答案 2 :(得分:0)

didSelectRowAtIndexPath方法中,你根本不应该看细胞。您应该查看数据模型中的数据。就像您在cellForRowAtIndexPath中所做的那样,获取 indexPath 的数据。然后对数据进行适当的检查。

答案 3 :(得分:0)

我不知道为什么你不理解它只是在didSelectRowAtIndexPath中使用indexpath.row而你将只获得所需的单元格。