Segue 不能通过使用 Outlet 属性从一个控制器传递到另一个控制器?
Posted
技术标签:
【中文标题】Segue 不能通过使用 Outlet 属性从一个控制器传递到另一个控制器?【英文标题】:Segue cannot be passed from 1 controller to another by using Outlet property? 【发布时间】:2014-05-25 12:48:10 【问题描述】:我有两个控制器 A 和 B
在 B 中,我有一个 UISwitch IBOutlet。
当我使用 A 中的 Segue 时,
switch.on = YES
不起作用。
如果我在 B 中声明另一个属性,比如 switchvalue,
@property (strong, nonatomic) NSNumber* switchvalue;
我可以将值传递给 switchvalue。
有人知道吗?不能直接在控件上设置属性很繁琐。
【问题讨论】:
IBOutlets 没有及时设置 segue。所以如果你想传递一些信息,你需要使用一个临时属性,然后在 viewDidLoad 或 viewWillAppear 方法中设置出口。 ***.com/a/23403979/294884 【参考方案1】:无法在prepareForSegue
: 中设置IBOutlet 的值,因为调用此方法时尚未创建出口。如果你调试你的代码,你会看到调用prepareForSegue
时UISwitch的值是nil。
作为设置 NSNumber 属性的替代方法,您可以尝试this
【讨论】:
我添加了普通属性;当我调试时,我还看到普通属性也为零;但该值被传递给该普通属性。 字符串为 nil,因为它没有值。您可以设置一个值。在 IBOutlet 的情况下,您不是试图为插座设置一个值,而是为它的一个属性设置一个值。例如,您可以执行 controller.string = @"a" 但不能执行 controller.label.text = @"a" 因为 label 为 nil。因此无法更改文本属性。这就是区别以上是关于Segue 不能通过使用 Outlet 属性从一个控制器传递到另一个控制器?的主要内容,如果未能解决你的问题,请参考以下文章
无法将 OUTLET 从 Storyboard 导入到 ViewController
通过 segue 传递数据不能在 swift 3 中运行任何解决方案?