【问题标题】:Most efficient way to dynamically make a segue in Obj-C?在 Obj-C 中动态进行 segue 的最有效方法?
【发布时间】: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 呈现的视图知道要呈现什么对象?

标签: ios objective-c


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 2012-01-19
    • 2013-09-09
    • 2022-01-14
    • 2014-01-02
    相关资源
    最近更新 更多