无法从didSelectRowAtIndexPath获取文本

时间:2015-09-22 15:52:13

标签: ios objective-c uitableview

我在UIViewController之上添加了tableview,并且我还实现了UITableViewDataSourceUITableViewDelegate方法

出于某种原因,我没有从didSelectRowAtIndexPath.中获得价值我得到indexPath.row的预期值,但selectedCell.textLabel.text返回nil

我无法弄清楚可能是什么问题。我正在使用动态表。

//Array of multiple objects is filled through the delegated arrays and the arrays are properly filled.
#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return _arrayForMultipleObjects.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
    array = [[NSMutableArray alloc]init];

    // Configure the cell...
   _singleSelectionLabel= (UILabel *) [cell viewWithTag:2];
   _singleSelectionLabel.text=[self.arrayForMultipleObjects objectAtIndex:indexPath.row];


        return cell;
}


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *valu ;
    NSLog(@"%i count",indexPath.row);
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = selectedCell.textLabel.text;
    NSLog(@"%@",cellText);
//Here cellText is null
    if([tableView cellForRowAtIndexPath:indexPath].accessoryType==UITableViewCellAccessoryNone)
    {   [tableView cellForRowAtIndexPath:indexPath].accessoryType=UITableViewCellAccessoryCheckmark;

        valu = cellText;
    }

    NSLog(@"%@",valu);
}

1 个答案:

答案 0 :(得分:1)

如果您使用的是故事板,那么表格单元格的默认单元格样式为Custom,它会为您提供一个空白单元格,您可以在其中添加其他类型的控件。

如果您将标签拖到单元格上并更改了其文本,那么您可能使用自定义样式UITableViewCell

属性textLabel仅适用于Custom之外的其他类型的单元格,例如Basic或Detailed。

请仔细检查是否适合您。

编辑:已准备就绪,您可以像这样获取文字:

self.arrayForMultipleObjects[indexPath.row]