1

ポップオーバー(pop)のボタンからメインビュー(TapView)のメソッドを呼び出そうとしています

今、私は持っています

    -(void)popoverControllerDidDismissPopover:
(UIPopoverController *)pop {
    [self noise];
}

ポップオーバーが閉じられたときにメソッドを実行するように設定します。これは機能し、「許容可能」です

私がむしろ起こりたかったのは、ユーザーがUIButtonを押すことです(ポップオーバーで「load1」と呼びましょう...これは代わりにメソッドを呼び出します。

誰かがこれについて何か明るいアイデアを持っていますか?とてもシンプルだと思いますが、私が何をしようとしているのかよくわかりません。そのため、答えを検索することで、かなり幅広い選択肢が得られました。

編集:これは私が私のポップオーバーを呼んでいる方法です。それが役立つかもしれません。

saveLoadScifi *sLoad = [[saveLoadScifi alloc] init];
UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:sLoad];
[pop setDelegate:self];
CGRect popoverRect = [self.view convertRect:[sender frame]
                                   fromView:[sender superview]];
[pop presentPopoverFromRect:popoverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
4

2 に答える 2

1

コンテンツ ビュー コントローラーにプロパティを追加し、メソッドを呼び出す TapView インスタンスを参照するように設定します。次に、コンテンツ ビュー コントローラー内から、必要なメソッドにコールバックできます。

これは同じ質問のようで、答えは妥当に見えます。

UIPopovercontroller 親?

于 2011-08-09T23:58:12.100 に答える
1

ポップオーバー コントローラーのヘッダーに、次を追加します。

#import "TapView.h"
@property(nonatomic, assign) TapView *tapView;    // *assign* to prevent mutual retain cycle

それを合成します。ポップオーバーを作成するとき ( TapView.m のどこかで、alloc/init投稿したコードを参照するポップオーバーを想定しています)、設定します。

sLoad.tapView = self;

の後alloc/init。この場合、selfメソッドを呼び出したい TapView のインスタンスになります。

ボタンはアクション メソッドを呼び出す必要があります。

- (IBAction)noise {
    [self.tapView noise];
}

そのメソッドを (ヘッダーで適切な宣言を使用して-(IBAction)noise;) 接続すると、準備完了です。

于 2011-08-11T16:41:51.250 に答える