我认为这个问题非常简单。
我有一个主视图和一个弹出视图。
我正在尝试创建一个自定义委托,这将使我能够在特定时间关闭弹出窗口视图。我的代码发布在下面。我遇到的真正简单问题是我的代码dosnt似乎正在输入委托代码。任何想法为什么?它构建并运行但似乎没有任何事情发生,我已经提出了NSLog语句,popover nslog出现了但是函数在 mainview dismissPopover什么都不做。
Mainview.h
@interface MainScreen : UIViewController<DismissPopoverDelegate>
Mainview.m
- (void) dismissPopover:(NSNumber *)dataa
{ /* Dismiss you popover here and process data */
[popoverController dismissPopoverAnimated:YES];
NSLog(@"OLOLO");
}
Popover.h
@protocol DismissPopoverDelegate
- (void) dismissPopover:(NSNumber *)yourDataToTransfer;
@end
@interface SelectAgePopOver : UIViewController<UITableViewDataSource,
UITableViewDelegate,UIPopoverControllerDelegate>{
NSArray *items;
id<DismissPopoverDelegate> delegate;
}
@property (nonatomic, assign) id<DismissPopoverDelegate> delegate;
Popover.m
[self.delegate dismissPopover:selrow];
我希望代表被调用。
由于
弹出视图在主视图中通过以下方法调用.m
controller = [[SelectAgePopOver alloc] initWithNibName:@"SelectAgePopOver" bundle:nil];
popoverController = [[UIPopoverController alloc] initWithContentViewController:controller];
[popoverController setDelegate:self];
popoverController.popoverContentSize = CGSizeMake(250, 294);
if ([popoverController isPopoverVisible]) {
[popoverController dismissPopoverAnimated:YES];
} else {
CGRect popRect = CGRectMake((self.AgeRangeTextField.frame.origin.x+50),
(self.AgeRangeTextField.frame.origin.y+50),
(self.AgeRangeTextField.frame.size.width),
(self.AgeRangeTextField.frame.size.height));
[popoverController presentPopoverFromRect:popRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
}
答案 0 :(得分:0)
在实例化SelectAgePopOver实例的位置,您需要将SelectAgePopOver实例的委托设置为Mainview.m中的MainScreen(self),例如:
controller = [[SelectAgePopOver alloc] initWithNibName:@"SelectAgePopOver" bundle:nil];
;
controller.delegate = self;
请尝试如上所示设置控制器代理。
在SelectAgePopOver.h类文件中,您不需要设置UIPopOverControllerDelegate
。