Вызовите метод делегата из UIPopover - PullRequest
0 голосов
/ 12 апреля 2011

У меня есть поповер, который загружается с контроллером навигации, который отображает Xib ItemsView, и у меня есть метод делегата, поэтому этот поповер можно отклонить из контроллера основного вида.Это прекрасно работает, пока я не перейду к следующему уровню в UITableView (который загружает подробный вид).После загрузки подробного представления я не могу вызвать метод dismiss на главном контроллере представления.Я совершенно новый для делегатов и был бы признателен за любые рекомендации.Спасибо!

MainView ---> ItemsView -----> DetailView

Как вызвать метод делегата, расположенный на MainView из DetailView?

//Load the popover with first view:

    ItemsView *popoverView = [[ItemsView alloc] init];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:popoverView];

self.popOverController = [[[UIPopoverController alloc] initWithContentViewController:navController] autorelease];

popoverView.delegate = self;

[navController release];

[popOverController setPopoverContentSize:CGSizeMake(450.0, 300.0)];
[popOverController presentPopoverFromRect:addButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

[popoverView release];

Теперь янажмите подробный вид:

//Push DetailView

    if(self.secondView == nil) {

    NSLog(@"Called");

    AddDetail *viewController = [[AddDetail alloc] initWithNibName:@"AddDetail" bundle:nil];

    self.secondView = viewController;

    [viewController release];

}

// Setup the animation

secondView.contentSizeForViewInPopover = self.view.bounds.size;
self.contentSizeForViewInPopover = self.view.bounds.size;

[self.navigationController pushViewController:self.secondView animated:YES];


}

1 Ответ

2 голосов
/ 12 апреля 2011

Напишите свойство и метод в подробном представлении, как показано ниже.

  • Свойство как идентификатор myParent
  • Метод как (недействительный) setParent: parent {myParent = parent;}

при нажатииdetailviewcontroller вызывает этот метод как.

  • [detailViewcontroller setParent: self];

теперь вы можете вызывать метод, объявленный в Parent как

  • [myParent yourMethodName];

Надеюсь, это поможет

...