カスタムデリゲートを作成しました:
例.h:
@protocol DismissExamplePopoverDelegate
- (void) dismissExamplePopover;
- (int) getUserID;
@end
@interface Example : UIViewController{
id<DismissExamplePopoverDelegate> delegate;
}
@property (nonatomic, assign) id<DismissExamplePopoverDelegate> delegate;
これは、次のように Example.m で呼び出されます。
[[self delegate] getUserID];
私のmaincontroller.hで:
#import "Example.h"
@interface MainScreen : UIViewController<DismissExamplePopoverDelegate>
maincontroller.m:
-(int) getUserID
{
return 100;
}
ビュー Example は、次のメソッドによって呼び出されます。
ExampleController = [[Example alloc] initWithNibName:@"Example" bundle:nil];
ExamplePopoverController = [[UIPopoverController alloc] initWithContentViewController:ExampleController];
[ExampleController setDelegate:self];
ExamplePopoverController.popoverContentSize = CGSizeMake(600, 480);
if ([ExamplePopoverController isPopoverVisible]) {
[ExamplePopoverController dismissPopoverAnimated:YES];
} else {
CGRect popRect = CGRectMake((self.EditExampleSelectAddButtonProperty.frame.origin.x),
(self.EditExampleSelectAddButtonProperty.frame.origin.y),
(self.ExampleSelectAddButtonProperty.frame.size.width),
(self.ExampleSelectAddButtonProperty.frame.size.height));
[ExamplePopoverController presentPopoverFromRect:popRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
[[self delegate] getUserID]
完全に機能する以外の関数を配置すると、 viewdidload
100が返されます。その中viewdidload
で0を返します。
私が達成したいのは、ポップオーバーがロードされたときに自動的に呼び出されるデリゲートです。viewdidload は最適な場所ですか、それとも別の場所にありますか