【问题标题】:Setting Specific UITableView rows to push in a specific detail view?设置特定的 UITableView 行以推送特定的详细信息视图?
【发布时间】:2013-05-25 01:55:48
【问题描述】:

我的 UITableView 目前有 7 行,我正在使用 segues 推送详细视图。但是,我目前有两个不同的视图控制器,并且想要这样的东西:

如果选择了第 1 行和第 2 行,则推入:“showMenuDetail1” 如果选择了第 3 到 4 行,则推入:showMenuDetail2"

这是我目前拥有的:我不确定如何将行准确分配给特定行。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"showMenuDetail1"]) {
        NSIndexPath *indexPath = [self.menuTableView indexPathForSelectedRow];
        HomeDetailViewController *HDViewController = segue.destinationViewController;
        HDViewController.theName = [[menu objectAtIndex:indexPath.row] name];
    }
}

任何帮助将不胜感激!我知道这是一个 if 和 else 语句,但我不确定如何写出确切的条件。谢谢!

【问题讨论】:

  • 如果选择了第 1 行和第 2 行,您想从当前视图显示MenuDetail1 视图,如果选择了第 3 和第 4 行,则显示MenuDetail2 视图
  • 没错,就是这样。

标签: ios objective-c uitableview


【解决方案1】:

创建两个转场。重要的想法是附加到表格视图单元格,而是将它们从包含表格的视图控制器拖到各自的目的地。给他们每个人一个标识符。

然后在tableView:didSelectRowAtIndexPath: 中检查indexPath.row 并触发相应的转场。

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

    if (indexPath.row < 2) { // or whatever
        [self performSegueWithIdentifier:@"SegueForRows0and1" sender:self];
    }
    // etc...
}

如果需要,您仍然可以实现 prepareForSegue,包括,如果需要,请参考 tableView 的indexPathForSelectedRow

【讨论】:

  • 谢谢 danh,但是我遇到了“self”错误。 uitableview 没有可见的@interface 声明选择器'performseguewithidentifier 我确保将segues 与viewController 挂钩,但什么也没有。我目前在视图控制器中有一个 UITableView。
  • 尝试导入detailView.h,然后导入[detailview performSegueWithIdentifier:@"loginSuccessful" sender:self]
  • @user1886754,对不起,它是 - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender。请参阅 UIViewController 文档。编辑答案以反映这一点。
  • @user1886754,该错误告诉您将其发送到表视图而不是控制器(如果您实际拥有的是大写字母,则大写全错)。
猜你喜欢
  • 1970-01-01
  • 2015-01-07
  • 2018-12-17
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 2023-04-09
相关资源
最近更新 更多