故事板,从容器视图拖动到IBAction的链接到父级

时间:2014-09-25 16:50:32

标签: ios uistoryboard uicontainerview

这是一个名为Club

的简单VC

enter image description here

俱乐部有一个功能:

@implementation Club
-(IBAction)clickMe
    {
    NSLog(@"Whoa!");
    }
@end

现在关于 ButtonA 。显然在故事板中你可以从ButtonA拖动到函数" clickMe"在" Club"。

现在。关于ButtonB。

有没有办法,在Storyboard中,从ButtonB 拖动到" clickMe"在" Club"?

也许使用神秘的"对象"对象,或...... ??

请注意,显然,您可以为小视图创建一个类,并具有一个函数:

@implementation SmallViewOnRight
-(IBAction)sameAsClickMe
    {
    [(Club*)self.parentViewController clickMe];
    }
@end

然后,您可以从ButtonB拖动到sameAsClickMe。但那是一件非常麻烦的事。

请注意,使用像这样的容器视图来处理不同的"区域是非常正常的。你的主要观点(特别是如果你有东西滑动等等,当你有很多东西和#34;在彼此之上")。移动"部分"非常方便。在主视图外部,使用容器视图。但这是一个完全的滋扰"放弃"点击次数。

在Storyboard中有一种不明确的方法吗?干杯!

只是FTR,仅限iOS7 +,没什么旧的

注意 - 进入"其他方向"经过深入探索,很容易做到。

1 个答案:

答案 0 :(得分:0)

不,你不能这样做但你可以使用委托来做这种行为。

在SecondViewController.h中:

@protocol SecondViewControllerDelegate <NSObject>
-(void)clickMe;
@end

@interface SecondViewController.h: UIViewController

@property (weak, nonatomic) id <SecondViewControllerDelegate> delegate;

@end

在SecondViewController.m中:

@implementation SecondViewController 

- (IBAction) buttonBClicked:(id)sender {
 if ([self.delegate respondsToSelector:@selector(clickMe)] {
       [self.delegate performSelector:@selector(clickMe)];
    }
}

@end

在ClubViewController.m中:

#import "SecondViewController.h"
@interface ClubViewController () <SecondViewControllerDelegate>
@end

@implementation ClubViewController.m

// make yourself a delegate of SecondViewController somewhere in your code. For example, in prepareForSegue. 

-(void)clickMe {
   NSLog (@"Clicked");
}

@end

编辑: 试试Unwind Segues吧! 我已经发布了关于如何使用它们的答案here。但是跳过第4步。