我刚刚开始学习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];
}
}
答案 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
中的单元格。