0

popoverControllerDidDismissPopoverメソッドをどこに配置し、どのように呼び出すかがわからないため、メソッドを呼び出すのに問題があります。

私は次のようにポップオーバーを作成しました-

//  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);
}

どんな助けでも大歓迎です。私は今それを分類しようとして一週間を過ごしました。

4

1 に答える 1

1

まず、デリゲート パターンを理解する必要がありますが、まだ完全には理解していないようです。

ポップオーバーはpopoverControllerDidDismissPopover、デリゲートのメソッドを呼び出すものになります。クラスにプロトコルを実装し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
}
于 2012-08-10T13:59:47.890 に答える