【问题标题】:Segue cannot be passed from 1 controller to another by using Outlet property?Segue 不能通过使用 Outlet 属性从一个控制器传递到另一个控制器?
【发布时间】: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 方法中设置出口。

标签: ios ios5 ios7 ios6


【解决方案1】:

无法在prepareForSegue: 中设置IBOutlet 的值,因为调用此方法时尚未创建出口。如果你调试你的代码,你会看到调用prepareForSegue时UISwitch的值是nil。

作为设置 NSNumber 属性的替代方法,您可以尝试this

【讨论】:

  • 我添加了普通属性;当我调试时,我还看到普通属性也为零;但该值被传递给该普通属性。
  • 字符串为 nil,因为它没有值。您可以设置一个值。在 IBOutlet 的情况下,您不是试图为插座设置一个值,而是为它的一个属性设置一个值。例如,您可以执行 controller.string = @"a" 但不能执行 controller.label.text = @"a" 因为 label 为 nil。因此无法更改文本属性。这就是区别
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多