[英]how to make popup menu in IOS universal App
我需要知道如何為通用應用程序制作彈出菜單。我為此使用了警報,但我無法嵌入新的字體類型,也無法添加任何圖像,因此菜單看起來不太好。任何人都可以告訴我解決這個問題的方法。
警報菜單的代碼
- (IBAction)setting:(UIBarButtonItem *)sender {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"དཀར་ཆག"
message:@"\nགང་རུང་ཞིག་འདེམས་རོགས།"
delegate:self
cancelButtonTitle:@"ཕྱིར་འཐེན།"
otherButtonTitles:@"ཉེ་འཆར།",@"དགའ་མོས།",@"ཉེ་འཆར་གཙང་བཟོ།",@"དགའ་མོས་གཙང་བཟོ།",nil];
[alert show];
}
彈出視圖控制器
打開 ViewController.h 文件,並聲明以下IBAction
方法: 1
- (IBAction)showUserDataEntryForm:(id)sender;
返回到 Interface Builder,並將該操作方法連接到新添加的按鈕。
現在,再次打開ViewController.h
文件,首先導入TestViewController
類,如下所示: 1
#import "TestViewController.h"
此外,通過將ViewController
類添加到界面標題行,使其符合TestViewControllerDelegate
協議,如下所示: 1
@interface ViewController : UIViewController <UIActionSheetDelegate, TestViewControllerDelegate>
通過采用上面的協議,我們以后就可以使用TestViewController
類的delegate方法來獲取輸入的數據了。
現在,讓我們進入本節最重要的部分,我們之前聲明的IBAction
方法的實現以及 popover 控制器的使用。 不過對於初學者來說,我們必須為彈出框聲明一個私有類屬性,所以打開ViewController.m
並轉到界面的私有部分。 在那里,添加以下屬性聲明:
@interface ViewController ()
@property (nonatomic, strong) UIPopoverController *userDataPopover;
@end
現在,直接進入 IBAction 方法實現,我們將在其中初始化並使用上述對象。 正如我在本節開頭所說的,popover 控制器的特殊特性是能夠顯示另一個視圖控制器的內容,因此我們必須做的第一步是初始化TestViewController
類的對象。
- (IBAction)showUserDataEntryForm:(id)sender {
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];
testViewController.delegate = self;
}
如您所見,在初始化時我們也加載了視圖控制器的xib
文件,除此之外,我們使我們的類成為testViewController
對象的委托。 現在我們手上有了一個視圖控制器,讓我們使用我們私下聲明的彈出控制器對象,讓它最終出現。 我們只需要添加三個命令,我們會一步一步地看到。 首先,讓我們執行初始化:
self.userDataPopover = [[UIPopoverController alloc] initWithContentViewController:testViewController];
很明顯,我們要顯示的視圖控制器是直接作為參數提供給 popover 控制器的。 這就是我們首先聲明並初始化TestViewController
對象的原因。 下一步是定義彈出框的大小,它通常與包含的視圖的大小相匹配:
self.userDataPopover.popoverContentSize = CGSizeMake(320.0, 400.0);
最后,讓我們展示一下:
[self.userDataPopover presentPopoverFromRect:[(UIButton *)sender frame]
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
如您所見,此方法接受四個參數。 第一個是彈出框起源的框架,通常是用於呈現它的按鈕的框架。 下一個,是彈出控制器將出現的視圖。 如您所知,並不總是需要在默認視圖中顯示它,但這是最常見的情況。 第三個參數指定出現在 popover 控制器上的箭頭的方向,指向起源於的按鈕。 除非你確保彈窗控制器總是顯示在同一個地方,否則你最好使用 UIPopoverArrowDirectionAny 參數讓系統決定箭頭的位置。 不要忘記,當改變 iPad 的方向時,popover 控制器可以重新定位到一個新的位置,而且很可能箭頭應該指向另一個方向。 最后,最后一個參數指定是否使用動畫顯示彈出框,通常該值設置為 YES。
這是整個IBAction
方法:
- (IBAction)showUserDataEntryForm:(id)sender {
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];
testViewController.delegate = self;
self.userDataPopover = [[UIPopoverController alloc] initWithContentViewController:testViewController];
self.userDataPopover.popoverContentSize = CGSizeMake(320.0, 400.0);
[self.userDataPopover presentPopoverFromRect:[(UIButton *)sender frame]
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.