菜鸟教程小白 发表于 2022-12-12 16:50:26

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:@&#34;དཀར་ཆག&#34;
                      message:@&#34;\nགང་རུང་ཞིག་འདེམས་རོགས།&#34;
                      delegate:self
                      cancelButtonTitle:@&#34;ཕྱིར་འཐེན།&#34;
                      otherButtonTitles:@&#34;ཉེ་འཆར།&#34;,@&#34;དགའ་མོས།&#34;,@&#34;ཉེ་འཆར་གཙང་བཟོ།&#34;,@&#34;དགའ་མོས་གཙང་བཟོ།&#34;,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 &#34;TestViewController.h&#34;
</code></pre>

<p>另外,通过将 <code>ViewController</code> 类添加到接口(interface)标题行,使其符合 <code>TestViewControllerDelegate</code> 协议(protocol),如下所示:
1</p>

<pre><code>@interface ViewController : UIViewController &lt;UIActionSheetDelegate, TestViewControllerDelegate&gt;
</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:@&#34;TestViewController&#34; 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:@&#34;TestViewController&#34; 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]
查看完整版本: ios - 如何在IOS通用App中制作弹出菜单