【问题标题】:Call Delegate method from UIPopover从 UIPopover 调用 Delegate 方法
【发布时间】:2011-04-12 17:46:34
【问题描述】:

我有一个加载了导航控制器的弹出框,它显示 ItemsView xib,并且我有一个委托方法,因此可以从主视图控制器中解除此弹出框。这工作得很好,直到我深入到 UITableView 中的下一个级别(加载详细视图)。加载详细视图后,我无法在主视图控制器上调用解除方法。我对代表们很陌生,希望得到任何指导。谢谢!

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

如何从 DetailView 调用位于 MainView 上的委托方法?

//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];


}

【问题讨论】:

    标签: iphone delegates uipopover


    【解决方案1】:

    在详细视图中编写一个属性和方法,如下所示。

    • id 为 myParent 的属性
    • 方法为 (void)setParent:parent { myParent = parent;}

    在推送 detailviewcontroller 时调用此方法。

    • [detailViewcontroller setParent:self];

    现在您可以将 Parent 中声明的方法调用为

    • [myParent yourMethodName];

    希望对你有帮助

    【讨论】:

    • 工作就像一个魅力。感谢您为我解开这个谜团!
    猜你喜欢
    • 2014-09-16
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    相关资源
    最近更新 更多