0

这是一个名为 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+,没有更旧的

注意 - 朝着“其他方向”前进是经过充分探索并且很容易做到的。

4

1 回答 1

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

编辑:尝试放松赛格!我已经在此处发布了有关如何使用它们的答案。但跳过第 4 步。

于 2014-09-25T17:13:12.620 回答