如何基于indexPath获取单元格文本?

时间:2010-05-24 07:21:36

标签: iphone objective-c cocoa-touch uitableview uitabbarcontroller

我有一个UITabBarController,其UITabBarItems超过5个,因此moreNavigationController可用。

在我的UITabBarController委托中,我执行以下操作:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//do some stuff
//...

UITableView *moreView = (UITableView *)self.tabBarController.moreNavigationController.topViewController.view;
    moreView.delegate = self;
}

我想实现一个UITableViewDelegate,这样我就可以捕获所选择的行,设置一个自定义视图属性,然后推送视图控制器:

- (void)tableView:(UITableView *)tblView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
  //how can I get the text of the cell here?
}

当用户点击一行时,我需要获取单元格的文本。我该如何做到这一点?

2 个答案:

答案 0 :(得分:53)

- (void)tableView:(UITableView *)tblView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
      //how can I get the text of the cell here?
      UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
      NSString *str = cell.textLabel.text;
}

更好的解决方案是维护单元格数组并直接在此处使用

    // 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] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    Service *service = [self.nearMeArray objectAtIndex:indexPath.row];
    cell.textLabel.text = service.name;
    cell.detailTextLabel.text = service.description;
    if(![self.mutArray containsObject:cell])
          [self.mutArray insertObject:cell atIndex:indexPath.row];
    return cell;
}



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

    UITableViewCell *cell = [self.mutArray objectAtIndex:indexPath.row];
    NSString *str = cell.textLabel.text;

}

答案 1 :(得分:0)

Swift 5

您始终可以根据 cellUITableVIewUICollectionView 获取您的 IndexPath,如下所示:

tableView.cellForItem(at: indexPath)
collectionView.cellForItem(at: indexPath)