在 Obj-C 中动态进行 segue 的最有效方法?
Posted
技术标签:
【中文标题】在 Obj-C 中动态进行 segue 的最有效方法?【英文标题】:Most efficient way to dynamically make a segue in Obj-C? 【发布时间】:2018-10-03 14:24:02 【问题描述】:我正在为我的应用程序编写一个 segue。基本上,当按下 UITableViewCell
中的附件时,应该调用这个 segue。
在写它之前,我正在计划如何处理它。
第一种方法:创建一个视图,添加标签,设置标识符,使用accessoryButtonTappedForRowWithIndexPath
调用segue,使用标识符加载视图,访问(不知何故,不确定)视图内的标签,使用适当的内容更改它们,显示。
第二种方法:制作一个笔尖,以某种方式加载笔尖并制作segue,访问标签并适当更改内容,显示。
如果我使用标识符来加载带有 segue 的视图,我不确定哪种方法最好,以及我需要做什么来访问标签。
建议?
【问题讨论】:
请提供更多关于您想要达到的目标的详细信息。如果您使用故事板并使用系统附件视图,您可以通过“附件操作”轻松定义 segue。如果你想从代码中调用 segue - 使用 UITableView Delegate func tableView tableView:accessoryButtonTappedForRowWithIndexPath: 并从那里(通过 id)启动你想要的 segue。如果您想定义自定义按钮而不是附件视图,则可以在单元格中使用定义闭包,在创建单元格时分配它并使用它。 嘿,迈克尔,这正是我在帖子中所写的。我知道该怎么做,虽然我不确定如何在加载了标识符的东西(不是 xib)中显示动态内容。 你的意思是当内容是动态的时候,你的意思是你不知道如何在表格视图中显示单元格的内容? 不,我知道该怎么做。问题是,当我使用动态 segue 显示 segueView 时,如何在 segueView 中显示动态内容? Tou 的意思是如何让 segue 呈现的视图知道要呈现什么对象? 【参考方案1】:这在很大程度上取决于您如何处理附件视图和触发 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
【讨论】:
以上是关于在 Obj-C 中动态进行 segue 的最有效方法?的主要内容,如果未能解决你的问题,请参考以下文章
在内存中操作 std::strings 的 2D 动态数组的最有效方法是啥?
来自 viewDidAppear 的 Segue 调用有效,但不是来自 viewWillAppear
在spring mvc应用程序中加密json有效负载的最早点
SceneKit,动态加载和替换纹理的最有效方法是啥? UIImage,MTLTexture,MDLTexture,URL?