2015-04-01 49 views
0

我有一個表,並且每個表都分配了一個鏈接。當點擊一行時,鏈接將在KINWebBrowserViewController視圖中打開。我不希望桌子允許風景,但我希望網絡瀏覽器允許它。我該怎麼做?Swift允許在KINWebBrowserViewController視圖中顯示景觀

一些代碼:

let linkItem = linkLabels[indexPath.row] as String 

    let webBrowser = KINWebBrowserViewController() 
    let url = NSURL(string: linkItem) 
    webBrowser.actionButtonHidden = true 
    webBrowser.loadURL(url) 

    self.navigationController?.pushViewController(webBrowser, animated: true) 

歡迎所有的建議。謝謝:)

回答

1

在Xcode中項目的General - deployment info部分中,勾選應用中任何屏幕的所有允許方向。

iOS在屏幕上可見的最底層UIViewController中調用supportedInterfaceOrientations方法。如果VC覆蓋整個屏幕,則較早的VC(進一步朝向根視圖控制器)沒有調用該方法。

如果您webBrowser VC覆蓋了整個屏幕,然後把一個方法是:

override func supportedInterfaceOrientations() -> Int { return Int(UIInterfaceOrientationMask.All.rawValue) } 

如果webBrowser沒有覆蓋整個屏幕,並navigationController仍呈現一個導航欄,則該方法將不被調用,而navigationController中的那個將被調用。因此,子類UINavigationController

class CustomNC:UINavigationController { 
    override func supportedInterfaceOrientations() -> Int { 
     if visibleViewController is KINWebBrowserViewController { return Int(UIInterfaceOrientationMask.All.rawValue) } 
     return Int(UIInterfaceOrientationMask.Portrait.rawValue) 
    } 
} 

,並宣佈你的UINavigationController是一個CustomNC代替。我沒有測試代碼,它可能有錯別字,但現在這種技術正在爲我工​​作。

更多解釋:CustomNC是一個新的,更聰明的UINavigationController,你只是想發明。您可以將代碼放在項目中的任何swift文件中。它就像現有的UINavigationController,只是它改變了旋轉時的行爲。所以你希望它繼承UINavigationController的所有行爲,然後重寫旋轉位。該位是否繼承:

class CustomNC:UINavigationController { 

和該位不會壓倒一切的:

override func supportedInterfaceOrientations() -> Int { 

而且你需要告訴Xcode中,你的根視圖控制器是一個CustomNC,而不是一個普通的UINavigationController。如果您使用故事板構建了項目,則可以單擊UINavigationController進行選擇,然後將其類別從UINavigationController更改爲,位於Xcode右上角的Identity Inspector選項卡中。

+0

感謝您的回答。我不確定你的意思。什麼是CustomNC? – 2015-04-01 10:57:54

+0

添加了更多解釋。 – emrys57 2015-04-01 11:05:56

+0

好的謝謝。我得到它的工作,但是當回到tableviewcontroller和KINWebBrowserViewController在橫向tableviewcontroller也在景觀。我只想要肖像畫。這是tableviewcontroller唯一的一次風景。任何其他幫助? – 2015-04-01 11:13:02

相關問題