ポップオーバー内でさまざまなアクションを行っているときにメイン ビューで変更を確認するには、委任を使用する必要があります。まず、ポップオーバー コントローラーのヘッダー ファイル内にプロトコルを作成する必要があります。
#import <Foundation/Foundation.h>
@class MyPopoverController;
@protocol MyPopoverDelegate
- (void)valueChanged:(NSString*) newVal;
@end
@interface MyPopoverController: UIPopoverController
@property (weak) id<MyPopoverDelegate> delegate;
@end
次に、.m で次のように実装します。
- (void) someActionOccured
{
if([self.delegate respondsToSelector:@selector(valueChanged:)]){
[self.delegate valueChanged:valueYouWantToSendBack];
}
}
メインクラスでは、MyPopoverDelegate
プロトコルを実装する必要があることに注意してください。
@interface MainViewController: UIViewController <MyPopoverDelegate>
また、ポップオーバー コントローラーをインスタンス化すると、次のようになります。
/*
** inside MainViewController.m
*/
// remember to assign it's delegate
MyPopoverController *popoverController = [MyPopoverController alloc] init];
popoverController.delegate = self;
また、プロトコルのメソッドを実装する必要があります。
/*
** inside MainViewController.m
*/
- (void)valueChanged:(NSString*) newVal
{
// process the string and display it where you need it
}