0

我刚刚开始学习objective-c和一般的编程,我真的被这个问题困住了。我正在使用情节提要创建一个应用程序来记录不同类型游戏的分数。我有一个主视图控制器,它是一个表格视图,它有带有详细标签的原型单元格。有一个AddKeeperViewController允许用户输入玩家姓名和游戏类型。然后将游戏类型用作原型单元的详细标签。

然后我想让每个单元格推送到不同的视图控制器,具体取决于详细文本标签是什么。目前我只有 2 种游戏类型,我知道我需要在 tableView 中设置逻辑didSelectRowAtIndexPath来选择要使用的 segue。我从视图控制器而不是单元格设置我的 segues,它们每个都有一个唯一的标识符。我只是不知道如何设置我的 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];
    }
}
4

2 回答 2

1

看来您走在正确的轨道上。但是,我认为您等待选择哪个 segue 的时间太长了。也许这样的事情对你有用:

- (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];
    }
}
于 2013-11-10T04:45:10.750 回答
0

你也可以创建不同单元格的原型,每一个都连接不同的segue,导致不同的视图,然后使用正确的原型来获得dequeueReusableCellWithIdentifier.

于 2016-02-29T11:59:23.497 回答