2013-02-05 59 views
0

我知道這個問題以前已經問過,但是如何根據我在iOS 5中的界面方向支持不同的視圖?取決於iOS上的方向的不同視圖

Apple的示例顯示了一個PortraitViewController和一個LandscapeViewController。 PortraitViewController創建了LandscapeViewController並註冊了自己的旋轉通知。當它接收到旋轉通知時,它會根據當前的界面方向推送或彈出LandscapeViewController。

到目前爲止這麼好。

但我怎樣才能保持數據兩個控制器已同步? (它們顯然顯示相同的數據,因爲它們在技術上與用戶是相同的控制器,只是在橫向和縱向上具有不同視圖)。兩者都有一個「重新載入數據按鈕」,用於重新載入其數據。我如何告訴PortraitViewController在LandscapeViewController重新加載時顯示相同的數據,反之亦然?

另一個問題是內存警告。當界面處於橫向模式並收到內存警告時,我的PortraitViewController被卸載。現在,如果我爲我的LandscapeViewController重新加載數據,那麼PortraitViewController無法做到這一點,因爲它已卸載並且其Outlet仍設置爲零。

我該如何解決所有這些問題?

+0

爲什麼要使用兩個視圖控制器?你不能使用1個視圖控制器,其中有兩個視圖 - 一個是爲肖像創建的,一個是針對景觀的。然後只需檢查負載上的設備方向並顯示相關視圖。然後在'willRotateToInterfaceOrientation'中做同樣的操作來切換哪個視圖可見? – Patrick

+0

然後,我必須將兩個視圖之間共享的所有視圖連接兩次。 – user975561

+0

您的意思是通過segue從縱向/橫向視圖呈現的其他視圖控制器的連接?如果這樣你就可以一次性將其連接到視圖控制器,並通過調用'觸發它們[自performSegueWithIdentifier:@「名」發件人:自我]' – Patrick

回答

0

所以我最終做的是使用一個ViewController和2個視圖,這個視圖根據接口方向顯示了不同的視圖。這樣做的缺點是我必須連接所有網點兩次並操作兩次。

可是這樣一來,我可以很容易地共享數據,避免一種觀點正在卸貨,而另一個則不是。

0

你實際上首先必須作出新的廈門國際銀行......

去文件 - 新建 - 文件 選擇用戶界面 選擇視圖 等方面做出新的廈門國際銀行

現在選擇新的視圖 轉到右側面板 插件類名身份檢查連接廈門國際銀行老的.h和.m文件

重要的一步......

與文件的所有者

現在新的廈門國際銀行與中的appdelegate使用oldviewcontroller h和.M

最後一步

連接if語句來改變基於IOS

的nibname連接新廈門國際銀行視圖

爲此,您可以使用這個.. [的UIDevice currentDevice] systemVersion]

在if語句你有新的看法改變initwithname ..

self.viewController = [[[視圖控制器的alloc] initWithNibName:@ 「查看」 捆綁:無]自動釋放

0

你應該有一個新的類,將存儲你的數據。兩個viewController都會引用這個dataController(或任何你想要的名字)。 您還可以在viewViewer的viewWillAppear和viewWillDisappear上添加一些邏輯。 最後,對於內存警告問題,您可以檢查viewWillAppear是否已加載視圖並採取相應措施。

相關問題