我需要知道如何为通用应用程序制作弹出菜单。我为此使用了警报,但我无法嵌入新字体类型,也无法添加任何图像,因此菜单看起来不太好。谁能告诉我解决这个问题的方法。
警报菜单的代码
- (IBAction)settingUIBarButtonItem *)sender {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle"དཀར་ཆག"
message"\nགང་རུང་ཞིག་འདེམས་རོགས།"
delegate:self
cancelButtonTitle"ཕྱིར་འཐེན།"
otherButtonTitles"ཉེ་འཆར།",@"དགའ་མོས།",@"ཉེ་འཆར་གཙང་བཟོ།",@"དགའ་མོས་གཙང་བཟོ།",nil];
[alert show];
}
Best Answer-推荐答案 strong>
PopoverViewController
打开 ViewController.h 文件,并声明以下 IBAction 方法:
1
- (IBAction)showUserDataEntryFormid)sender;
返回 Interface Builder,然后将该操作方法连接到新添加的按钮。
现在,再次打开ViewController.h 文件,首先导入TestViewController 类,如下图:
1
#import "TestViewController.h"
另外,通过将 ViewController 类添加到接口(interface)标题行,使其符合 TestViewControllerDelegate 协议(protocol),如下所示:
1
@interface ViewController : UIViewController <UIActionSheetDelegate, TestViewControllerDelegate>
通过上述协议(protocol),我们以后就可以使用TestViewController 类的委托(delegate)方法来获取输入的数据了。
现在,让我们进入本节最重要的部分,我们之前声明的 IBAction 方法的实现以及弹出框 Controller 的使用。不过对于初学者,我们必须为弹出框声明一个私有(private)类属性,因此打开 ViewController.m 并转到界面的私有(private)部分。在那里,添加以下属性声明:
@interface ViewController ()
@property (nonatomic, strong) UIPopoverController *userDataPopover;
@end
现在,直接进入 IBAction 方法实现,我们将在其中初始化并使用上述对象。正如我在本节开头已经说过的,popover Controller 的特殊特性是能够显示另一个 View Controller 的内容,因此我们必须做的第一步是初始化 TestViewController的对象 类。
- (IBAction)showUserDataEntryFormid)sender {
TestViewController *testViewController = [[TestViewController alloc] initWithNibName"TestViewController" bundle:nil];
testViewController.delegate = self;
}
如您所见,在初始化时,我们还加载了 View Controller 的 xib 文件,除此之外,我们让我们的类成为 testViewController 对象的委托(delegate)。现在我们已经有了一个 View Controller ,让我们使用我们私下声明的弹出框 Controller 对象,让它最终出现。我们只需要添加三个命令,我们将逐步看到。首先,让我们执行初始化:
self.userDataPopover = [[UIPopoverController alloc] initWithContentViewController:testViewController];
很明显,我们要显示的 View Controller 是直接作为参数给弹出框 Controller 的。这就是我们首先声明并初始化 TestViewController 对象的原因。下一步是定义弹出框的大小,它通常与包含的 View 的大小相匹配:
self.userDataPopover.popoverContentSize = CGSizeMake(320.0, 400.0);
最后,让我们展示一下吧:
[self.userDataPopover presentPopoverFromRect:[(UIButton *)sender frame]
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
如您所见,此方法接受四个参数。第一个是弹出框的来源框架,通常是用于呈现它的按钮框架。下一个是弹出框 Controller 将出现的 View 。如您所知,并不总是需要在默认 View 中显示它,但这是最常见的情况。第三个参数指定弹出框 Controller 上出现的箭头的方向,指向源自的按钮。除非您确保弹出框 Controller 将始终显示在同一位置,否则您最好使用 UIPopoverArrowDirectionAny 参数让系统决定箭头的位置。不要忘记,当改变 iPad 的方向时,popover Controller 可以重新定位到一个新的位置,并且很有可能箭头应该指向另一个方向。最后,最后一个参数指定popover是否会以动画形式出现,通常该值设置为YES。
这是整个 IBAction 方法:
- (IBAction)showUserDataEntryFormid)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];
}
关于ios - 如何在IOS通用App中制作弹出菜单,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/33382629/
|