버튼을 눌러 팝업을 숨기는 코드를 작성했지만 작동하지 않습니다 (새로운 기능 없음). 나는 메인 뷰 (A라고 부름)를 내부 버튼으로 가지고 있으며, 버튼을 누르면 popover가 표시됩니다 (B라고 부름). popover에는 popover를 닫고 A에서 무언가를하기 위해 사용하고자하는 또 다른 버튼이 있습니다. Im 다른 말로하면, A는 내 메인보기이고, 버튼을 누르면 로그인을 실행하기 위해 popover (B)를 보여줍니다 (자격 증명은 채워).버튼을 사용하여 팝업을 닫고 실행을 위임합니다.
로그인 버튼 (popover 내의 버튼)을 눌러 서비스를 호출하여 자격 증명을 확인하고 사용자가 인증 된 경우 팝업을 닫고 내 메인보기 (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 뷰 (실제로 popover 뷰)에서 대리자를 설정하지 않습니다. 내 기본보기 내 나는 다음과 같이 prepareForSegue 방법을 추가 한 - (무효) prepareForSegue : (UIStoryboardSegue *) SEGUE 보낸 사람 : (ID) 보낸 사람 { 경우 ([isEqualToString segue.identifier : @ "로그인"]) { ((UIStoryboardPopoverSegue *) segue) .popoverController.delegate = self; } } 식별자가 내 스토리 보드에 설정 한 식별자와 동일한 "로그인"과 같은지 확인합니다. –
이 코드는 여전히 문제를 해결하지 못합니다 ... –
스토리 보드에서 어떻게 작동해야하는지 모르겠습니다. 나는 스토리 보드를 사용하지 않는다. – Dave