首页 > 解决方案 > 在 Obj-C 中动态进行 segue 的最有效方法?

问题描述

我正在为我的应用程序编写一个 segue。UITableViewCell基本上,当按下附件时应该调用此 segue 。

在写它之前,我正在计划如何处理它。

第一种方法:创建一个视图,添加标签,设置标识符,调用 segue accessoryButtonTappedForRowWithIndexPath,使用标识符加载视图,访问(不知何故,不确定)视图内的标签,用适当的内容更改它们,显示。

第二种方法:制作笔尖,以某种方式加载笔尖并制作segue,访问标签并适当更改内容,显示。

我不确定哪种方法最好,如果我使用标识符来加载带有 segue 的视图,我需要做什么来访问标签。

建议?

标签: iosobjective-c

解决方案


这在很大程度上取决于您如何处理附件视图和触发 segue。问题是您必须在原地触发 segue,并实际向其他视图提供信息。所以你必须建立额外的变量,比如@property NSIndexPath *selectedAccessoryIndex;.

然后相应地更新它,比如

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

    self.selectedAccessoryIndex = indexPath;
    [self performSegueWithIdentifier:@"segue" sender:nil];

}

在为 segue 做准备的同时继续进行:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    ((ViewController *)segue.destinationViewController).selectedString = self.array[self.accessoryIndex.row];
}

请注意,在这个地方目标视图控制器尚未加载,因此您现在无法访问任何插座。当然,您可以通过调用来加载它,[segue.destinationViewController view];但不建议这样做。更好地提供要显示的对象(更弱)。然后更新其中的网点viewDidLoad


推荐阅读