【发布时间】:2014-11-20 13:04:30
【问题描述】:
这是一个名为 Club 的微不足道的 VC
俱乐部有一个功能:
@implementation Club
-(IBAction)clickMe
{
NSLog(@"Whoa!");
}
@end
现在关于 ButtonA。显然,在 Storyboard 中您可以将从 ButtonA 拖到“Club”中的“clickMe”函数中。
现在。关于ButtonB。
有什么方法可以在 Storyboard 中从 ButtonB 拖动到“Club”中的“clickMe”?
也许使用神秘的“物体”物体,或者......??
请注意,显然,您可以为小视图创建一个类,并拥有一个功能:
@implementation SmallViewOnRight
-(IBAction)sameAsClickMe
{
[(Club*)self.parentViewController clickMe];
}
@end
然后,您可以从 ButtonB 拖动到 sameAsClickMe。但这太麻烦了。
请注意,使用这样的容器视图来处理主视图的不同“区域”是很正常的(特别是当您有东西滑动等时,以及当您有很多东西“彼此重叠”时) )。使用容器视图将“部分”移动到主视图之外非常方便。但这完全是令人讨厌的“忽略”点击次数。
Storyboard 中是否有一种晦涩难懂的方法来执行此操作?干杯!
只是 FTR,仅限 iOS7+,没有更早的版本
注意 - 朝着“另一个方向”前进是经过充分探索并且很容易做到的。
【问题讨论】:
-
除非您也将
View Controller设置为Club,否则我认为这是不可能的。通过代码,您可以使用您的Club引用并将要从buttonB调用的操作设置为Club的操作之一(如果您需要一些 var/let 来更新 UI 或详细说明) -
根据我的经验,容器视图的要点是拥有一个独立的视图控制器来处理自己,这样您就不会最终得到一个巨大的、臃肿的 UIViewController 类。我处理这种情况的方法是为第二个 ViewController 制定一个协议,并将其委托设置为 ClubViewController 类。然后你可以照你说的做,拥有
sameAsClickMe方法,让它通过委托调用ClubViewController的clickMe方法。 -
大家好!奇怪的是,您不能只将它拖到情节提要中,因为 它们都是实例化的,所以没有理由不能。我想知道神秘的“物体”物体?这可能是相关的吗? SFeuer,在我的长段(“注意...”)中,我解释了用例。你知道,如果不使用容器视图作为小的“子”区域,几乎不可能制作非常复杂的(尤其是幻灯片)屏幕。一个谜!
-
顺便说一句,伙计们,我认为让容器视图使用委托有点在概念上很奇怪!!!就好像(比如说)只是一个按钮,视图不只是拥有它,视图必须通过成为按钮委托的机制,才能使用它!容器视图是视图“完全的一部分”——实际上,它与“一个非常复杂的控件”没有什么不同。
标签: ios uistoryboard uicontainerview