ボタンを押してポップオーバーを非表示にするコードを書きましたが...動作しません(新しいものはありません)。内部にボタンがあるメイン ビュー (A と呼びます) があり、ボタンを押すとポップオーバーが表示されます (B と呼びます)。ポップオーバーには、ポップオーバーを閉じて A で何かを実行するために使用する別のボタンがあります。つまり、A がメイン ビューで、ボタンを押すとログインを実行するためにポップオーバー (B) が表示されます (資格情報を入力できます)の)。
ログイン ボタン (ポップオーバー内のボタン) を押してサービスを呼び出して資格情報を確認し、ユーザーが認証されている場合は、ポップオーバーを閉じてメイン ビュー (A) を更新します。
以下は私のコードです
ポップオーバー ヘッダー ファイル (B)
#import <UIKit/UIKit.h>
@protocol MyPopoverDelegate <NSObject>
- (void) didLoginButton;
@end
@interface login : UIViewController
@property (nonatomic, assign) id<MyPopoverDelegate> delegate;
- (IBAction) doLogin;
@end
ポップオーバー実装ファイル (B)
#import "login.h"
@implementation login
@synthesize delegate;
....
..
- (IBAction) doLogin {
[self.delegate didLoginButton];
}
ボタンは doLogin アクションにリンクされており、(ポップオーバー内で) 正常に動作します。内部にはいくつかのロジックがあり、うまく機能します。
メイン ビュー ヘッダー ファイル (A)
#import <UIKit/UIKit.h>
#import "login.h"
@interface ViewController : UIViewController <UIPopoverControllerDelegate, MyPopoverDelegate> {
UIPopoverController *myPopoverController;
}
@property (nonatomic, retain) UIPopoverController *myPopoverController;
....
..
@end
メイン ビュー実装ファイル (A)
@synthesize delegate;
..
...
- (void) didLoginButton {
if ([myPopoverController isPopoverVisible]) {
NSLog(@"dismiss ok");
[myPopoverController dismissPopoverAnimated:YES];
}
}
....
..
私のコードを実行し、メインビューからログインボタンを押すと、ポップオーバーが表示されます。ポップオーバー内のボタンを押しても何も起こりません。
基本的に、メイン ビュー ファイルに設定した didLoginButton メソッドは決してトリガーされず、もちろん、ポップオーバーは常に表示されます。私が間違っていることは何ですか?