【问题标题】:iOS - Segues and Static CellsiOS - 转场和静态单元格
【发布时间】:2013-09-15 22:27:56
【问题描述】:

我在 TableView 中有一组静态单元格,并且我有 3 个这些单元格(A、B、C)都设置了 push 相同的 ViewController 到屏幕上;这很好用!

我想要的是一种让 View 控制器识别单击了哪个单元格的方法:ViewController 可以通过它改变它呈现的内容。具体来说,我希望我的 viewController 中的 int (比如说)根据单击的单元格设置为特定值

我猜我在 - (void) prepareForSegue method ?

非常感谢任何帮助

以下代码在我的视图控制器中

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
 if ([segue.identifier isEqualToString:@"segue1"]){
    selectedSegue = 1;
 } else {
    selectedSegue = 2;
 }

  NSLog(@"Selected Segue: %d", selectedSegue); 
}

selectedSegue 总是返回 0;

我也在我的故事板中设置了 Segue 标识符

【问题讨论】:

  • 有什么问题? -prepareForSegue 应该在每次点击您的表格单元格之一时被调用。你应该只检查segues identifier 并为每个segue 做工作。
  • 我的 prepareforSegue 方法永远不会被调用。 . . . - 我还编辑了我的问题以添加详细信息

标签: ios uiviewcontroller uinavigationcontroller segue uistoryboardsegue


【解决方案1】:

我想你快到了。检查prepareForSegue:sender: 的以下示例实现(这个方法签名甚至可能是问题!)

#pragma mark - Storyboard Methods

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if([segue.identifier isEqualToString:@"segueOne"]) {

        BBFirstViewController *vcOne = (BBFirstViewController *)segue.destinationViewController;
        vcOne.someProperty = @1;
    }
    else if([segue.identifier isEqualToString:@"segueOne"]) {

        BBSecondViewController *vcTwo = (BBSecondViewController *)segue.destinationViewController;
       vcTwo.someProperty = @2;
   }
}

然后只需确保在故事板文件中每个 segue 都有其 identifier 集:

点击两个视图控制器之间的segue线并在属性检查器中设置标识符。

【讨论】:

  • 非常感谢您的详细解释:如果我在 MenuViewController 中实现我的静态单元 - MenuViewController *必须子类化 ViewController 单元将 @987654328 @ :此外,-prepareForSegue 方法必须在 MenuViewController 类之前调用​​,而不是在被推送的 ViewController 类中调用 - 请您重新执行此操作吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多