UIViewController のサブクラスがあります - > MyPopUpViewController
@protocol MyPopUpViewController Delegate;
@interface MyPopUpViewController : UIViewController
{
}
@property (nonatomic, strong) id <MyPopUpViewControllerDelegate> delegate;
-(IBAction) buttonPressed:(id)sender;
@end
@protocol MyPopUpViewControllerDelegate
-(void) popupButtonPressed: (MyPopUpViewController*)controller;
@end
この MyPopUpViewController をインスタンス変数として持つことはできません。これは外部から取得されるためであり、これらのポップアップが多数存在する可能性があります。これまでのところ、これを試してみましたが、保持されていないためにデリゲート呼び出しでクラッシュします:
MyMainViewController:
-(void)externalNotificationReceived: (NSString*) sentMessage
{
MyPopUpViewController *popupView = [[MyPopUpViewController alloc] init];
popupView.delegate = self;
[self.view addSubview:popupView.view];
[popupView setInfo :sentMessage :@"View" :@"Okay"];
popupView.view.frame = CGRectMake(0, -568, 320, 568);
popupView.view.center = self.view.center;
}
-(void)popupButtonPressed:(MyPopUpViewController *)controller :(int)sentButtonNumber
{
NSLog(@"Popup Delegate Called");
[controller.view removeFromSuperview];
controller.delegate = nil;
controller = nil;
}
ポップアップが表示され、[OK] ボタンがタップされると、クラッシュし、その NSLog に到達しません。どうすれば変更できますか
MyPopUpViewController *popupView = [[MyPopUpViewController alloc] init];
..インスタンス変数にせずに保持しますか?
前もって感謝します。