我正在为我的应用程序编写 segue。基本上,当按下 UITableViewCell
中的附件时,应该调用此 segue。
在写它之前,我正在计划如何处理它。
第一种方法:创建一个 View ,添加标签,设置标识符,使用 accessoryButtonTappedForRowWithIndexPath
调用 segue,使用标识符加载 View ,访问(不知何故,不确定) View 内的标签,使用适当的内容,展示。
第二种方法:创建一个 nib,以某种方式加载 nib 并进行 segue,访问标签并适本地更改内容,显示。
我不确定哪种方法最好,如果我使用标识符通过 segue 加载 View ,我需要做什么来访问标签。
建议?
最佳答案
这在很大程度上取决于您如何处理附件 View 和触发转场。问题是您必须在适当的位置触发 segue,并实际向其他 View 提供信息。所以你必须建立额外的变量,比如 @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];
}
请注意,在此位置上,目标 View Controller 尚未加载,因此您现在无法访问任何 socket 。当然,您可以通过调用 [segue.destinationViewController view];
来加载它,但不推荐这样做。最好提供要显示的对象(更好的弱)。然后在 viewDidLoad
关于ios - 在 Obj-C 中动态进行 Segue 的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52629271/