ios - 在 Obj-C 中动态进行 Segue 的最有效方法?

标签 ios objective-c

我正在为我的应用程序编写 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

中更新 outlet

关于ios - 在 Obj-C 中动态进行 Segue 的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52629271/

相关文章:

ios - 如何在不支持 iAd 的国家/地区测试 iAd?

ios - XCode - 架构 armv7 arm64 的 undefined symbol

ios - 如何在不更改 iPhone 上的语言首选项的情况下使用 Xcode 以另一种语言测试我的 iOS 应用程序?

objective-c - 如何检查字符串是否以任何字母开头,如 a-z 或 A-Z?

ios - 在 sprite 上启用触摸(spritekit)

Ios 10 iPhone 7 键盘在收到通知时消失

ios - 创建一个可以嵌入到 UIViews 中并处理自己的模态的可重用控件

iphone - SDK 4 (iOS4 OS) 的定制 iPhone 键盘

objective-c - iOS - 不能使用 'super' 作为引用?

objective-c - 如何使用 Accelerate Framework 将 iOS 相机图像转换为灰度图像?