如何根据表格视图单元格的详细文本标签,从表格视图控制器中将segue设置为不同的视图控制器?

时间:2013-11-10 02:15:16

标签: ios objective-c xcode

我刚刚开始学习Objective-c和编程,我真的很困惑这个问题。我正在使用故事板创建一个应用程序,可以为不同类型的游戏保留分数。我有一个主视图控制器,它是一个表视图,它有原型单元格和细节标签。有AddKeeperViewController允许用户输入玩家名称和游戏类型。然后将游戏类型用作原型单元的细节标签。

我想让每个单元格推送到不同的视图控制器,具体取决于详细文本标签的内容。我目前只有2种游戏类型,我知道我需要在tableView didSelectRowAtIndexPath中设置逻辑,它将选择要采用的segue。我从视图控制器设置我的segue,而不是单元格,它们每个都有一个唯一的标识符。我只是不知道如何设置我的if语句来使用gameType作为segue采取的决定因素。

以下是我MasterViewController.m文件中的部分代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"scoreKeeperCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    scoreKeeper *keeperAtIndex = [self.dataController objectInListAtIndex:indexPath.row];

    [[cell textLabel]setText:keeperAtIndex.name];
    [[cell detailTextLabel] setText:keeperAtIndex.gameType];

    return cell;
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if(cell.detailTextLabel) {
          //statement
    }
    if ([[segue identifier] isEqualToString:@"ShowKeeperDetails"]) {
        MADDetailViewController *detailViewController = [segue destinationViewController];

        detailViewController.keeper = [self.dataController objectInListAtIndex:[self.tableView indexPathForSelectedRow].row];
    }
}

2 个答案:

答案 0 :(得分:1)

好像你走在了正确的轨道上。但是,我认为你等待的时间有点太长,无法选择采取哪种措施。也许这样的事情对你有用:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    if ([cell.detailTextLabel.text isEqualToString:@"TEXT"]) 
    {
        [self performSegueWithIdentifier:@"segueTypeOne" sender:nil];
    } 
    else 
    {
        [self performSegueWithIdentifier:@"segueTypeTwo" sender:nil];
    }
}

答案 1 :(得分:0)

你也可以创建不同的单元格原型,每个原型与不同的segue相连,导致不同的视图,然后使用正确的原型来获取dequeueReusableCellWithIdentifier中的单元格。