0
我寫了一些代碼來隱藏彈出按鈕,但按下按鈕但它不起作用(沒有新增功能)。 我有一個主視圖(我將它稱爲A)與一個按鈕裏面,按下按鈕彈出顯示(我將它稱爲B)。彈出式窗口中有另一個按鈕,我想用它來關閉彈出窗口並在A中執行某些操作。換句話說,A是我的主視圖,按下按鈕我顯示一個彈出窗口(B)執行登錄(憑據可以是填寫)。使用按鈕關閉彈出窗口並委託執行
按下登錄按鈕(彈出窗口中的那個)我調用一個服務來檢查憑證,如果用戶已通過身份驗證,則需要關閉彈出窗口並更新我的主視圖(A)。
下面是我的代碼
按鈕與doLogin動作鏈接酥料餅的頭文件(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];
}
,它工作正常(在popover內)。我內部有一些邏輯,它運作良好。
主視圖頭文件(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];
}
}
....
..
運行我的代碼並按下登錄按鈕形成出現的酥料餅的主視圖。按下popover中的按鈕什麼也沒有發生。
基本上,我已經設置到我的主視圖文件中的didLoginButton方法永遠不會被觸發,當然,彈出窗口總是可見的。 我做錯了什麼?
我使用在我的storybpard中定義的segue顯示popover。不知道我該如何設置我的代表,所以......我認爲你是對的。我沒有在我的B視圖(實際上是彈窗視圖)中設置委託。 在我的主視圖我已經添加的方法prepareForSegue如下 - (無效)prepareForSegue:(UIStoryboardSegue *)賽格瑞發件人:(ID)發送方{ 如果([segue.identifier isEqualToString:@ 「登錄」]){ ((UIStoryboardPopoverSegue *)segue).popoverController.delegate = self; } } 我檢查標識符是否與我在故事板中設置的標識符相同的「登錄」。 –
這段代碼仍然沒有解決問題... –
我不知道它應該如何與故事板一起工作。我不使用故事板。 – Dave