• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何在IOS通用App中制作弹出菜单

[复制链接]
菜鸟教程小白 发表于 2022-12-12 16:50:26 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我需要知道如何为通用应用程序制作弹出菜单。我为此使用了警报,但我无法嵌入新字体类型,也无法添加任何图像,因此菜单看起来不太好。谁能告诉我解决这个问题的方法。

This is the pic of the menu i had created

警报菜单的代码

- (IBAction)settingUIBarButtonItem *)sender {

UIAlertView *alert = [[UIAlertView alloc]
                     initWithTitle"དཀར་ཆག"
                      message"\nགང་རུང་ཞིག་འདེམས་རོགས།"
                      delegate:self
                      cancelButtonTitle"ཕྱིར་འཐེན།"
                      otherButtonTitles"ཉེ་འཆར།",@"དགའ་མོས།",@"ཉེ་འཆར་གཙང་བཟོ།",@"དགའ་མོས་གཙང་བཟོ།",nil];

[alert show];
}



Best Answer-推荐答案


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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap