1

(これは単純なはずです。しかし、それは何時間も私を悩ませてきました。)私は単にそのUIView内からViewControllerメソッドを呼び出そうとしています。

myViewControllerは、UIViewを宣言して作成します。

myUIView = [[viewCreator alloc] init…];

myViewControllerにもメソッドがあります。

-(void)inABottle{
    NSLog(@"Hello.");
}

UIView内に、UIButtonが作成されます。このボタンには、UIViewのメソッドに対する「セレクター」があり、ViewControllerの「inABottle」メソッドを呼び出そうとします。UIViewの内部:

...
[myButton addTarget:self action:@selector(isPressed) forControlEvents:UIControlEventTouchUpInside];

-(void)isPressed{
    [myViewController inABottle];// <<< This is where I have spent my day.
}

(ViewControllerヘッダーファイルはUIViewで#importされます。)

本当に助けていただければ幸いです。確かにこれは単純なはずです!

4

2 に答える 2

1

ビューでプロパティを作成し、作成時に現在のビュー コントローラーに設定します。

ビューコントローラー.m:

myUIView = [[viewCreator alloc] init...];
myUIView.myViewController = self;

view.h:

@property (weak) ViewController *myViewController;//weak or assign depending if you are using ARC or not, and ViewController should be the class of your view controller

ビュー.m:

@synthesize myViewController;

次に、質問のコードにいるようにメソッドを呼び出します。

また、デリゲートの使用方法も検討する必要があります。これは、デリゲートを使用する必要がある場合の完璧な例です。

于 2012-07-19T17:22:37.117 に答える