我无法调用popoverControllerDidDismissPopover
方法,因为我不知道将它放在哪里以及如何调用它。
我创建了一个popover,如下所示 -
// SettingsViewController.h
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
#import "ViewController.h"
#import "SharedData.h"
#import "PlayerPopUpVC.h"
@interface SettingsViewController : UIViewController <UITableViewDataSource, UIPopoverControllerDelegate> {
- (IBAction)popUp:(id)sender;
@property (strong, nonatomic) UIPopoverController *playerPopUpVC;
@property (strong, nonatomic) PlayerPopUpVC *popUp;
// SettingsViewController.m
#import "SettingsViewController.h"
- (IBAction)popUp:(id)sender {
UIButton *editPlayers = (UIButton *)sender;
if(self.playerPopUpVC) {
self.popUp= [[PlayerPopUpVC alloc] initWithNibName:@"PlayerPopUpVC" bundle:nil];
self.popUp=[[UIPopoverController alloc] initWithContentViewController:self.popUp];
}
[self.playerPopUpVC presentPopoverFromRect:[editPlayers frame] inView:[editPlayers superview] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
我知道我必须将我的PopOver的委托设置为self才能调用方法,但无法确定代码是什么。
我试过了 -
self.playerPopUpVC.delegate=self
但Xcode不喜欢它。
我的popOver类看起来像这样 -
// PlayerPopUpVC.h
#import <UIKit/UIKit.h>
@interface PlayerPopUpVC : UIViewController <UITableViewDataSource, UIPopoverControllerDelegate> {
}
// PlayerPopUpVC.m
#import "PlayerPopUpVC.h"
@interface PlayerPopUpVC ()
@end
- (void)viewDidLoad
{
[super viewDidLoad];
self.modalInPopover = NO;
self.contentSizeForViewInPopover = CGSizeMake(240, 400);
}
任何帮助都是最受欢迎的。我现在花了一个星期试图对它进行排序。
答案 0 :(得分:1)
首先,您需要了解委托模式,这似乎您还没有完全理解。
popover将是在委托上调用popoverControllerDidDismissPopover
方法的popover。您只需在类中实现UIPopoverControllerDelegate
协议,并将自己指定为弹出窗口的委托。为什么你说XCode不喜欢它?请提供更多信息。
此外,您在此处进行了错误的分配:
self.popUp=[[UIPopoverController alloc] initWithContentViewController:self.popUp];
编辑:提供了更多代码来帮助解决错误。请在下次提出这些问题之前查看代表模式。
你的SettingsController.m应该改为:
- (IBAction)popUp:(id)sender {
UIButton *editPlayers = (UIButton *)sender;
if(!self.popUp) {
self.popUp= [[PlayerPopUpVC alloc] initWithNibName:@"PlayerPopUpVC" bundle:nil];
}
self.playerPopUpVC=[[UIPopoverController alloc] initWithContentViewController:self.popUp];
self.playerPopUpVC.delegate = self;
[self.playerPopUpVC presentPopoverFromRect:[editPlayers frame] inView:[editPlayers superview] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
// Your code here
}