【发布时间】:2013-12-05 08:42:55
【问题描述】:
查看这张图片,您可以看到从 nib 加载的 UIView 有一个“文件所有者”
在 xib 中注意,Apple 已将某些内容标记为“文件所有者”。
所以,打开 Xcode,打开任意 xib,查看 Placeholders,然后直接查看下方,即可看到:
“文件所有者”。
在这个特定示例中,“xib-file-owner”恰好是类 LoginScreen。
因此,在运行时,对于由此 xib 创建的特定事物,“was-xib-file-owner”(创造一个短语)实际上是:
它将是:LoginScreen 类的某个特定实例。
现在在运行时。显然,在 UIView 中,每个 UIButton 都可以简单地调用
[self.someButton sendActionsForControlEvents:UIControlEventTouchUpInside ];
你确实可以“去”,准确地说:
您转到:LoginScreen 类的实例。
{注意 - 当然,UIButton 可以指向任何地方。我问的是我们知道 UIButton 确实指向 UIButton 的“was-xib-file-owner”的情况。}
事实上,allTargets 方法确实会返回该目标(在本例中是 LoginScreen 类的一些实例)作为它返回的 N 个目标的一部分,实际上是选择器(s) 等。
我还不够好,无法为 allTargets、NSSet 等编写代码。
谁能告诉我如何使用 allTargets 和一些计算机代码提取 LoginScreen 类的实例?即在 xib 中看到的“was-xib-file-owner”的运行实例?干杯。
稍后:
奇怪的是,这个问题的答案基本上和一般来说是:
[self.allTargets anyObject]
因为,如果从 xib 创建,将只有一个,而且,这正是上面粗体描述的内容。重复一遍:当然,UIButton 可以指向任何地方。我问的是我们知道 UIButton 确实指向 UIButton 的“was-xib-file-owner”的情况。
在那种(“正常”)情况下,答案确实非常简单——[self.allTargets anyObject]。
【问题讨论】:
-
为什么需要按钮的所有者?
-
您是指所有者还是容器?
-
有 N 个目标和 1 个超级视图... 0 个所有者
-
记录一下: giora:这是一个奇怪的问题,请注意苹果方法 sendActionsForControlEvents,例如,“需要”知道这一点。 anoop/daij:我的意思是“was-xib-file-owner”。当然,运行时没有“文件所有者”,所以我的意思是“was-xib-file-owner”。我已经编辑一遍又一遍地在问题中说明这一点,因为它可能会在未来帮助某人!干杯男人,真棒QA
标签: ios objective-c uiview uicontrol