菜鸟教程小白 发表于 2022-12-13 07:24:28

ios - 知道何时用手势解除 Split View Controller 的主控


                                            <p><p>我正在 iOS 7 上实现一个主从应用程序,主视图 Controller 是一个导航 Controller ,它可以在两个 TableViewController 中导航。细节是一个显示图像的简单 ViewController 。 </p>

<p>我已经详细实现了 <code>UISplitViewController</code> 方法:</p>

<pre><code>- (BOOL) splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
    return UIInterfaceOrientationIsPortrait(orientation);
}

- (void) splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc
{
    UINavigationController* nav= (UINavigationController*)aViewController;
    barButtonItem.title= nav.topViewController.title;
    self.navigationItem.leftBarButtonItem= barButtonItem;
}

- (void) splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    self.navigationItem.leftBarButtonItem= nil;
}
</code></pre>

<p>问题在于,当用户使用手势关闭主视图 Controller 时,不会调用 <code>splitViewController:willHideViewController:withBarButtonItem:forPopoverController:</code>。 </p>

<p>这样的问题是,如果用户通过主导航 Controller 导航然后关闭主控,标签栏按钮项目显示旧标题。 </p>

<p>为了更清楚,我将逐步解释发生了什么。主导航 Controller 的根导航 Controller 的标题是“Top Places”。推送的 ViewController 的标题是“照片”。当应用启动时,纵向模式下没有主人:</p>

<p> <img src="/image/w85Pp.png" alt="enter image description here"/> </p>

<p>用户呈现“Top Places” ViewController :</p>

<p> <img src="/image/FPccE.png" alt="enter image description here"/> </p>

<p>然后用户导航到第二个 ViewController :“照片”:</p>

<p> <img src="/image/Wr2xw.png" alt="enter image description here"/> </p>

<p>然后用户关闭主人,但标签栏按钮项目仍然保留它的旧标题“Top Places”:</p>

<p> <img src="/image/6N7I3.png" alt="enter image description here"/> </p>

<p>问题是 Split View Controller 委托(delegate)在通过手势解除主控时没有调用方法。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>根本没有 <code>UISplitViewControllerDelegate</code> 委托(delegate)方法来检测在纵向时弹出框何时被解除。它是如何被解雇的并不重要。如果您想知道,请为弹出框 Controller 设置一个委托(delegate)。</p>

<p>从横向旋转到纵向时会调用 <code>splitViewController:willHideViewController:withBarButtonItem:forPopoverController:</code> 委托(delegate)方法。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 知道何时用手势解除 Split View Controller 的主控,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/22702557/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/22702557/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 知道何时用手势解除 Split View Controller 的主控