iOS从视图控制器关闭popovercontroller

时间:2012-11-26 20:58:06

标签: ios uiviewcontroller uipopovercontroller

我正在挖掘SO,并认为我已经想出如何做到这一点,但我的测试失败了。我正试图从启动/包含的视图控制器关闭一个popovercontroller(我对poc和vc关系仍然有点模糊)。

在我的视图控制器中。我有这个:

@interface OAI_vcOperatingRooms : UIViewController {

    OAI_ColorManager* colorManager;
    OAI_FileManager* fileManager;

    UIPopoverController* myPopOverController;

}

@property (nonatomic, weak) UIPopoverController* myPopOverController;

- (void) closeVC : (id) sender;

并在.m文件中

UIButton* btnClose = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btnClose addTarget:self 
               action:@selector(closeVC:)
     forControlEvents:UIControlEventTouchDown];
    [btnClose setTitle:@"Close" forState:UIControlStateNormal];
    btnClose.frame = CGRectMake(10.0, 210.0, 160.0, 40.0);

    [self.view addSubview:btnClose];

- (void) closeVC : (id) sender {

    [myPopOverController dismissPopoverAnimated:YES];
}
在调用popovercontroller的uiview中,我引用了viewcontroller并添加了这个:

//operating rooms
        controller2 = [[OAI_vcOperatingRooms alloc] initWithNibName:@"OAI_vcOperatingRooms" bundle:nil];
        popoverController2 = [[UIPopoverController alloc] initWithContentViewController:controller2];

        controller2.myPopOverController = popoverController2; 

没有错误,但是当我点击关闭按钮时没有任何反应。是否可以从VC中引用POC?

由于

1 个答案:

答案 0 :(得分:1)

我相信ott的评论是关于某事的 - 尝试使用strong属性而不是weak属性。 ARC最后一次使用后,weak属性可能会被ARC设置为nil。 strong属性将在其父对象的生命周期内保留(在本例中为UIViewController子类),除非您提前将其设置为nil

注意:您的界面中可能不需要UIPopoverController *myPopOverController;,因为Xcode会自动生成_myPopOverController作为后备变量。