UIPopoverController 本身無視圖,其內容由 contentViewController 提供。工具列按鈕應放在該 contentViewController 的導航列或工具列中。
ContentViewController(繼承 UIViewController)viewDidLoad 中建立 UISegmentedControl 並設為 navigationItem.rightBarButtonItem 或 toolbarItemsContentViewController 設為 popover 的 contentViewController// 自訂內容控制器
@interface PopoverContentVC : UIViewController
@end
@implementation PopoverContentVC
- (void)viewDidLoad {
[super viewDidLoad];
UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:@[@"選項1", @"選項2"]];
seg.selectedSegmentIndex = 0;
[seg addTarget:self action:@selector(segChanged:) forControlEvents:UIControlEventValueChanged];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:seg];
// 或工具列
// self.toolbarItems = @[[[UIBarButtonItem alloc] initWithCustomView:seg]];
self.navigationController.toolbarHidden = NO;
}
- (void)segChanged:(UISegmentedControl *)sender {
NSLog(@"選擇: %ld", sender.selectedSegmentIndex);
}
@end
// 使用
PopoverContentVC *content = [[PopoverContentVC alloc] init];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:content];
[popover presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
UIPopoverController 在 iPhone 上已棄用,建議使用 UIPopoverPresentationController (透過 modalPresentationStyle = UIModalPresentationPopover)