0

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

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

这就是我使用名为 CustomCell 的类的单元格定义(从原型单元格)填充单元格的方式

//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

4 回答 4

1

Try putting the URL method into the string (e.g. http://).

于 2012-10-20T22:52:24.250 回答
0

Just double-checking that you've both added your UITableViewController as a UITableViewDelegate and have either programatically or in Interface Builder have wired the delegate back to your controller?

于 2012-10-20T22:51:11.930 回答
0

In your didSelectRowAtIndexPath method you shouldn't be looking at the cell at all. You should look at the data in your data model. Just like you did in cellForRowAtIndexPath, get the data for the indexPath. Then do the appropriate check against the data.

于 2012-10-20T22:51:26.437 回答
0

我不知道为什么你不能轻易理解它,只需在 didSelectRowAtIndexPath 中使用 indexpath.row ,你就会得到所需的单元格。

于 2012-10-21T05:29:41.607 回答