2011-11-04 5 views
2

저는 스토리 보드로 샘플 앱을 작업하고 있습니다. popoverview를 만들었을 때 나는 'Embed in navigation controller'과 같은 방식으로 사용했습니다.스토리 보드에서 Popoverview는 대표단을받지 않습니다.

그러나 큰 문제는 delegate 사용 중입니다. 그것은 popover 뷰에 위임하지 마십시오.

Xcode - Embedded Menu

[ViweController.m]

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

    if([[segue identifier] isEqualToString:@"PopRootViewController"]){ 

     NSLog(@"[segue destinationViewController] :%@", [segue destinationViewController]); 

     rootViewController = [[RootViewController alloc] init];    
     rootViewController.delegate = (id)self; 

     NSLog(@"%@---%@---%@", rootViewController.delegate, self, rootViewController); 
    } 
} 

-(void)didTap22 { 

    NSLog(@"delegate step 1 success!! "); 
} 

이 같은이 소스의 결과 :

[segue destinationViewController] :<UINavigationController: 0x88660a0> 
<ViewController: 0x6b795e0>---<ViewController: 0x6b795e0>---<RootViewController: 0x6b7da60> 

하지만 [RootViewController] 위임을받지 않습니다.

[RootViewController.m]

@implementation RootViewController 
@synthesize items, delegate; 

- (void)viewWillAppear:(BOOL)animated 
{ 

    [super viewWillAppear:animated]; 
    .... 
    self.items = mutableFetchResults; 

    NSLog(@"333333..... %@, ....... %@", self.delegate, self); 

} 

결과 :

333333..... (null), ....... <RootViewController: 0x8866520> 

RootViewController의 대표단은 null입니다. 해결 방법을 찾을 수 없습니다.

아무도 도와주세요!

+0

설명해야 할'rootViewController.delegate = (id) self;'행 앞에 NSLog (@ "대리자"를 설정하려고합니다.);를 입력하십시오. –

+0

죄송하지만 귀하의 의견을 이해할 수 없습니다. 내 잘못은 뭐니? – hyekyung

+0

위임자를 설정할 때 viewWillAppear이 이미 호출되었음을 나타내야합니다. –

답변

1

당신은 당신의 위임자 UIPopoverControllerDelegate를 당신의 View Controller의 클래스 선언에서 선언하지 않았을 것으로 생각됩니다.

이 줄은 의심 :

rootViewController.delegate = (id)self; 

당신이 내가 언급하고있는 선언을 한 경우 일반적으로 자신을 캐스팅 할 필요가 없습니다.

관련 문제