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 にドラッグできます。しかし、それは完全な迷惑です。

メイン ビューのさまざまな「領域」を処理するために、このようなコンテナー ビューを使用するのはごく普通のことであることに注意してください (特に、何かがスライドしている場合や、多くのものが「重なり合っている」場合)。コンテナー ビューを使用して、メイン ビューの外に「セクション」を移動すると非常に便利です。しかし、クリックを「見逃す」のは完全に迷惑です。

ストーリーボードでこれを行うあいまいな方法はありますか? 乾杯!

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

編集: Unwind Segues を試してください! それらの使用方法に関する回答をここに投稿しました。ただし、手順 4 はスキップしてください。

于 2014-09-25T17:13:12.620 に答える