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]