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