首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS UIPopoverController 自訂工具列按鈕:在 contentViewController 中加入 UISegmentedControl

     編輯:程式設計綜合問答

架構說明

UIPopoverController 本身無視圖,其內容由 contentViewController 提供。工具列按鈕應放在該 contentViewController 的導航列或工具列中。

實現步驟

  1. 建立自訂 ContentViewController(繼承 UIViewController)
  2. 在其 viewDidLoad 中建立 UISegmentedControl 並設為 navigationItem.rightBarButtonItem 或 toolbarItems
  3. 將此 ContentViewController 設為 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];

注意

  • iOS 9+ UIPopoverController 在 iPhone 上已棄用,建議使用 UIPopoverPresentationController (透過 modalPresentationStyle = UIModalPresentationPopover)
  • 工具列按鈕屬於內容控制器,不屬於 Popover 本身
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved