0

버튼을 눌러 팝업을 숨기는 코드를 작성했지만 작동하지 않습니다 (새로운 기능 없음). 나는 메인 뷰 (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 메소드는 실행되지 않으며 물론 팝업 표시가 항상 표시됩니다. 내가 뭘 잘못하고있어?

답변

1

을 설정 팝 오버를 제시하기 전에 위임

BViewController.delegate = mainAViewController; //or self 

. 이것이 문제가되지 않는다면 B 생성 및 프리젠 테이션의 코드를 제공해주십시오.

+0

내 storybpard에 정의 된 segue를 사용하여 popover를 보여줍니다. 내 대의원을 어떻게 세울 수 있는지 잘 모르겠다. 그래서 나는 네가 옳다고 생각한다. 내 B 뷰 (실제로 popover 뷰)에서 대리자를 설정하지 않습니다. 내 기본보기 내 나는 다음과 같이 prepareForSegue 방법을 추가 한 - (무효) prepareForSegue : (UIStoryboardSegue *) SEGUE 보낸 사람 : (ID) 보낸 사람 { 경우 ([isEqualToString segue.identifier : @ "로그인"]) { ((UIStoryboardPopoverSegue *) segue) .popoverController.delegate = self; } } 식별자가 내 스토리 보드에 설정 한 식별자와 동일한 "로그인"과 같은지 확인합니다. –

+0

이 코드는 여전히 문제를 해결하지 못합니다 ... –

+0

스토리 보드에서 어떻게 작동해야하는지 모르겠습니다. 나는 스토리 보드를 사용하지 않는다. – Dave

관련 문제