如何访问XIB的所有者?

时间:2011-10-30 18:09:14

标签: objective-c ios

我面临的问题涉及多个视图,每个视图都需要彼此通信。我选择使用文件所有者,但似乎无法从视图内部访问已加载的实例。

  • 每个矩形代表自己的视图
  • 活动将在“某些视图”上进行,其中用户的事件将导致顶视图中的标签更新
  • 点击任何类似的按钮都不会触发事件。没有设置输出来建立视图之间的关系

enter image description here

  • 视图之间没有设置出口
  • 在顶级视图(带标签)和文件所有者(UIViewController)之间设置出口。

最后,我想在视图2中更新视图1中的标签。

然后栏移动,我想要更改标签

enter image description here

目前,我认为合理的解决方案是要求文件所有者对标签进行更改。从“一些视图”,我想打电话给文件所有者并提出请求。

从作为笔尖一部分的任何视图的立场来看,我怎么知道这个笔尖的“文件所有者”是谁?

在Interface Builder中,文件所有者将IBOutlet维护到视图的UILabel。 enter image description here

2 个答案:

答案 0 :(得分:0)

这听起来可能非常混乱,使用NSNotifications可能会更好地解决。

但无论如何,你知道有一个UINib课吗?也许你可以继承它并跟踪所有者(在instantiateWithOwner: options:方法中传递)随着事物的加载。

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UINib_Ref/Reference/Reference.html

答案 1 :(得分:0)

您需要在Puzzle1类中定义delegate(或任何您喜欢的名称)插座,并将其链接到笔尖中的文件所有者。这将为您提供指向当前拥有您的视图的视图控制器实例的指针。如果将委托的类型设置为viewcontroller子类,则可以在视图中使用其方法和属性。