gpt4 book ai didi

ios - UIPopoverController + UINavigationController = 委托(delegate)问题

转载 作者:行者123 更新时间:2023-11-29 05:01:52 25 4
gpt4 key购买 nike

我有两个 View 设置(在 TabBar 内)。 DetailView 带有一个按钮,该按钮调用带有 NavigationController+UITableView (RootView) 的 PopOver,从 CoreData 加载数据。我在将数据从 UITableView 传递到 DetailView 时遇到问题。我有一个在 RootView 中声明并在 DetailView 中使用的协议(protocol)。

这是我用来从按钮创建 PopOver 的代码,因为我认为我有一些委托(delegate)问题。任何帮助都会很棒,

- (IBAction)zoneListButtonController
{
if (self.controladorPopOver == nil) {

ipadrootviewController = [[iPadRootViewController alloc] initWithNibName:@"iPadRootView" bundle:[NSBundle mainBundle]];
UINavigationController *ipadnavController = [[UINavigationController alloc]
initWithRootViewController:ipadrootviewController];

UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:ipadnavController];

self.controladorPopOver = popover;
popover.delegate = self;
self.title = @"Countries";
popover.popoverContentSize = CGSizeMake(320, 300);
[self.controladorPopOver presentPopoverFromRect:CGRectMake(112, 20, 86, 27) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];


[ipadnavController release];
[controladorPopOver release];
}

}

最佳答案

当您在 DetailView 中创建弹出窗口时,SubZone1iPadController 的实例不存在,因此您无法直接从 DetailView.

一种选择是将委托(delegate)属性添加到 iPadRootViewController 中,您可以在 zoneListButtonController 方法中设置该属性。然后,当 ipadrootviewController 创建 SubZone1iPadController 时,传递委托(delegate)。


因此,在 ipadrootviewControllerSubZone1iPadController 中,添加一个 delegate 属性:

@property (nonatomic,assign) id <SubZone1Tap> delegate;

然后,在 zoneListButtonController 方法中,设置 iPadRootViewController 上的委托(delegate)属性:

ipadrootviewController = [[iPadRootViewController alloc] init...
ipadrootviewController.delegate = self;

然后,ipadrootviewController 创建 SubZone1iPadController:

SubZone1iPadController *sz1 = [[SubZone1iPadController alloc] init...
sz1.delegate = self.delegate;
[self.navigationController pushViewController:...
[sz1 release];

最后,在DetailView中,确保委托(delegate)方法已实现。例如:

-(void)SubZone1Tap:(NSString *)name
{
NSLog(@"SubZone1Tap, name = %@", name);

//dismiss the popover if that's what you need to do...
[controladorPopOver dismissPopoverAnimated:YES];
}

关于ios - UIPopoverController + UINavigationController = 委托(delegate)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6735699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com