第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

iPhone上的肖像中的UISplitViewController顯示詳細(xì)的VC而不是master

iPhone上的肖像中的UISplitViewController顯示詳細(xì)的VC而不是master

iOS
慕田峪4524236 2019-11-22 13:18:04
我正在Xcode 6中使用Universal Storyboard,目標(biāo)是iOS 7及更高版本。我已經(jīng)實(shí)現(xiàn)了一個UISplitViewController,現(xiàn)在在運(yùn)行iOS 8的iPhone上本機(jī)支持,而Xcode會自動將其移植到iOS7。它運(yùn)行得非常好,除了當(dāng)您在運(yùn)行iOS 8的iPhone上以肖像模式啟動該應(yīng)用程序時,拆分視圖的詳細(xì)視圖當(dāng)我希望第一次看到主視圖控制器時,將顯示controller。我認(rèn)為這是iOS 8的錯誤,因?yàn)楫?dāng)您在iOS 7上運(yùn)行該應(yīng)用程序時,它會正確顯示主視圖控制器。但是iOS 8現(xiàn)在是通用汽車,并且這種情況仍在發(fā)生。我如何設(shè)置它,以便在將拆分視圖控制器折疊時(屏幕上僅顯示一個視圖控制器),在顯示拆分視圖控制器時,它顯示主視圖控制器而不顯示詳細(xì)信息?我已經(jīng)在Interface Builder中創(chuàng)建了此拆分視圖控制器。拆分視圖控制器是選項(xiàng)卡欄控制器中的第一個視圖控制器。主VC和詳細(xì)VC都是導(dǎo)航控制器,其中嵌入了表視圖控制器。
查看完整描述

3 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個贊

哦,老兄,這讓我頭疼了好幾天,無法弄清楚該怎么做。最糟糕的是,使用master-detail模板創(chuàng)建一個新的Xcode iOS項(xiàng)目效果很好。幸運(yùn)的是,最后,幾乎沒有什么是我找到解決方案的方法。


我發(fā)現(xiàn)有一些帖子建議解決方案是在上實(shí)現(xiàn)新primaryViewControllerForCollapsingSplitViewController:方法UISplitViewControllerDelegate。我嘗試了一下都無濟(jì)于事。Apple在似乎有效的主從模板中所做的工作是實(shí)現(xiàn)新的(深呼吸地說所有這一切)splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:委托方法(再次UISplitViewControllerDelegate)。根據(jù)docs,此方法:


請委托人調(diào)整主視圖控制器,并將輔助視圖控制器合并到折疊的界面中。


確保閱讀該方法的討論部分以獲取更多具體細(xì)節(jié)。


Apple處理此問題的方式是:


- (BOOL)splitViewController:(UISplitViewController *)splitViewController

collapseSecondaryViewController:(UIViewController *)secondaryViewController

  ontoPrimaryViewController:(UIViewController *)primaryViewController {


    if ([secondaryViewController isKindOfClass:[UINavigationController class]]

        && [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]]

        && ([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] detailItem] == nil)) {


        // Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.

        return YES;


    } else {


        return NO;


    }

}

此實(shí)現(xiàn)基本上執(zhí)行以下操作:


如果secondaryViewController是我們期望的(a UINavigationController),并且正在顯示我們期望的(a- DetailViewController您的視圖控制器),但沒有模型(detailItem),則Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.“

否則,返回“ NO讓拆分視圖控制器嘗試將輔助視圖控制器的內(nèi)容合并到折疊的界面中”

對于縱向模式的iPhone(以縱向模式開始或旋轉(zhuǎn)為縱向模式或更精確的緊湊尺寸級別),結(jié)果如下:


如果你的觀點(diǎn)是正確的

并有一個模型,顯示細(xì)節(jié)視圖控制器

但沒有模型,請顯示主視圖控制器

如果你的觀點(diǎn)不正確

顯示主視圖控制器

清澈如泥。


查看完整回答
反對 回復(fù) 2019-11-22
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個贊

這是Swift中公認(rèn)的答案。只需創(chuàng)建此子類并將其分配到情節(jié)提要中的splitViewController。


//GlobalSplitViewController.swift


import UIKit


class GlobalSplitViewController: UISplitViewController, UISplitViewControllerDelegate {


  override func viewDidLoad() {

    super.viewDidLoad()


    self.delegate = self

  }


  func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController!, ontoPrimaryViewController primaryViewController: UIViewController!) -> Bool{

    return true

  }


}


查看完整回答
反對 回復(fù) 2019-11-22
?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個贊

迅捷版Mark S的正確答案

如Apple的主從模板所提供。


func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController:UIViewController, ontoPrimaryViewController primaryViewController:UIViewController) -> Bool {

    guard let secondaryAsNavController = secondaryViewController as? UINavigationController else { return false }

    guard let topAsDetailController = secondaryAsNavController.topViewController as? DetailViewController else { return false }

    if topAsDetailController.detailItem == nil {

        // Return true to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.

        return true

    }

    return false

}

澄清度

(Mark S所說的有點(diǎn)令人困惑)


該委托方法稱為splitViewController: collapseSecondaryViewController: ontoPrimaryViewController:,因?yàn)樗褪沁@樣做的。當(dāng)更改為更緊湊的寬度尺寸時(例如,將手機(jī)從橫向旋轉(zhuǎn)到縱向時),它需要將拆分視圖控制器僅折疊為其中一個。


此函數(shù)返回一個布爾值,以決定是否應(yīng)折疊Detail并顯示Master。


因此,在本例中,我們將根據(jù)是否選擇了詳細(xì)信息來決定。我們?nèi)绾沃朗欠襁x擇了我們的詳細(xì)信息?如果我們遵循Apple的Master-Detail模板,則詳細(xì)視圖控制器應(yīng)具有一個包含詳細(xì)信息的可選變量,因此如果它為nil(.None),則沒有任何選擇,我們應(yīng)該顯示Master,以便用戶可以選擇某些內(nèi)容。


而已。


查看完整回答
反對 回復(fù) 2019-11-22
  • 3 回答
  • 0 關(guān)注
  • 922 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號