ios - 在 Obj-C 中动态进行 segue 的最有效方法?
问题描述
我正在为我的应用程序编写一个 segue。UITableViewCell
基本上,当按下附件时应该调用此 segue 。
在写它之前,我正在计划如何处理它。
第一种方法:创建一个视图,添加标签,设置标识符,调用 segue accessoryButtonTappedForRowWithIndexPath
,使用标识符加载视图,访问(不知何故,不确定)视图内的标签,用适当的内容更改它们,显示。
第二种方法:制作笔尖,以某种方式加载笔尖并制作segue,访问标签并适当更改内容,显示。
我不确定哪种方法最好,如果我使用标识符来加载带有 segue 的视图,我需要做什么来访问标签。
建议?
解决方案
这在很大程度上取决于您如何处理附件视图和触发 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
推荐阅读
- vue.js - SCSS 如何加载相对于源文件的样式 url 引用(错误:未找到相关模块)
- javascript - 如何选择具有相同类名的 javaScript 中的所有类?
- c - 在 Windows 10 上的 VSCode 中测试 GLUT 时收到错误消息
- azure - Azure Pipelines YAML - 将变量组用于“部署 Web 应用”azureSubscription 输入时出错
- javascript - 强制 div 溢出而不是调整大小
- android - Android 隐式意图触发媒体播放器,但媒体播放器显示“意图无效”
- javascript - 对body标签的垂直滚动条感到困惑
- .net - 导出 AZURE_STORAGE_CONNECTION_STRING="
" - 命令行失败并且 dotnet 在之后崩溃 - javascript - 使用 Angular 包装的 Jquery 库
- nginx - 用于 Odoo 的 CI/CD 的 Nginx 配置