В раскадровке Popoverview не принимают делегацию - PullRequest
2 голосов
/ 04 ноября 2011

Я работаю с примером приложения по раскадровке.Когда сделал popoverview, я использовал способ - 'Embed in navigation controller'.

Но у меня большая проблема с 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нулевой.Я не могу найти решение по этому поводу.

Кто-нибудь, помогите мне, пожалуйста!

1 Ответ

1 голос
/ 08 мая 2012

Я подозреваю, что вы не объявили свой делегат UIPopoverControllerDelegate в объявлении класса вашего контроллера представления.

Эта строка подозрительна:

 rootViewController.delegate = (id)self; 

вам не нужно приводить себяобычно, если вы сделали заявление, о котором я упоминаю.

...