0

私はSOを調べていて、これを行う方法を理解したと思いましたが、テストは失敗しました。起動/含まれているビューコントローラーからポップオーバーコントローラーを閉じようとしています(pocとvcの関係についてはまだ少しあいまいです)。

私のviewcontroller.hにはこれがあります:

@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を参照することは可能ですか?

ありがとう

4

1 に答える 1

1

オットのコメントは何かについてのものだと思います。strongプロパティの代わりにプロパティを使用してみてくださいweakweakプロパティは、最後に使用した直後にARCによってnilに設定される可能性があります。プロパティは、初期に設定しない限りstrong、親オブジェクト(この場合はUIViewControllerサブクラス)の存続期間中は保持されます。nil

注:Xcodeはバッキング変数としてUIPopoverController *myPopOverController;自動的に生成されるため、インターフェースにはおそらく必要ありません。_myPopOverController

于 2012-11-26T22:28:18.910 に答える