委托帮助代码的行为不符合预期

时间:2013-05-19 14:10:37

标签: ios objective-c ipad

我认为这个问题非常简单。

我有一个主视图和一个弹出视图。

我正在尝试创建一个自定义委托,这将使我能够在特定时间关闭弹出窗口视图。我的代码发布在下面。我遇到的真正简单问题是我的代码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];
    }
}

1 个答案:

答案 0 :(得分:0)

在实例化SelectAgePopOver实例的位置,您需要将SelectAgePopOver实例的委托设置为Mainview.m中的MainScreen(self),例如:

controller = [[SelectAgePopOver alloc] initWithNibName:@"SelectAgePopOver" bundle:nil];
;
controller.delegate = self;

请尝试如上所示设置控制器代理。

在SelectAgePopOver.h类文件中,您不需要设置UIPopOverControllerDelegate