TableView:didSelectRowAtIndexPath,如何捕获行名

时间:2012-05-07 09:01:15

标签: objective-c ios uitableview

我用随机数据填充我的tableView。所以我不知道我有多少行以及如何将其重定向到我想要的屏幕。我填写了:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyClass *currentScreenElement = [self.tableRows objectAtIndex:indexPath.row];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:currentScreenElement.objectName];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:currentScreenElement.objectName];

        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    }

    cell.textLabel.text = currentScreenElement.objectName;

    return cell;
}

这很好用。我有一个填充行的tableView。现在我想重定向到新的屏幕,我这样做:

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

    NewScreenClass *myScreen = [[NewScreenClass alloc] init];

    self.detailViewController = [[CreateView alloc] initWithScreenDef:[myScreen returnScreenFromName:@"second"]];

    [self.navigationController pushViewController:self.detailViewController animated:YES];

}

当然我知道我在这里所做的是为每一行创建相同的屏幕。但是我怎样才能重定向到我想要的屏幕? 我的currentScreenElement对象包含属性:objectName(tableView中的显示名称)和objectTarget(屏幕定义)。两个NSString。

我的问题是我应该以某种方式将我的currentScreenElement保存到行补丁中,或者我应该从dislay名称中捕获objectName吗?

2 个答案:

答案 0 :(得分:3)

在didSelectRowAtIndexPath中,您可以使用

获取单元格
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

然后从单元格中获取文本。

cell.textLabel.text

答案 1 :(得分:1)

为什么不能再次使用self.tableRows数组?

MyClass *currentScreenElement = [self.tableRows objectAtIndex:indexPath.row];
NSString *title = [currentScreenElement objectName];

你设置那一行就是这样,只需再次使用它。