當前位置:編程學習大全網 - 編程語言 - ios怎麽通過界面傳遞viewcontroller對象

ios怎麽通過界面傳遞viewcontroller對象

壹般方法

1)采用代理模式 子viewcontroller設計 代理協議,定義協議接口,父viewcontroller 實現協議接口,實現子viewcontroller 退出時將相關數據更新到父視圖。

2)采用iOS的消息機制 父viewcontroller註冊消息 子viewcontroller 發送消息,觸發父viewcontroller的消息處理。

3)采用database做為數據中間的存儲媒介,子viewcontroller將狀態數據存入DB,父viewcontroller從DB獲取數據更新view。

4)采用ios的NSDefault 存儲

5)通過AppDelegate 中定義全局變量實現中間數據的存儲。

UIViewController和UIViewController之間的交互

UIViewController之間,是否需要交互,怎樣交互?這個問題困擾我壹段時間了,憑空的去想象,其實很難想明白,尤其是在短時間內。最好的辦法,還是在持久的編碼/讀代碼的過程中,根據不同的使用場合及使用需求,來學習體會。

順便還想說壹句,圖形界面編程,最基本的編程思路和方法都是類似的,如果妳熟悉不止壹種圖形SDK,妳就會發現其實它們都是觸類旁通的。最近我就遊走於cocoa和qml之間,再加上之前qtwidget、gtk、clutter的編程經驗,我發現使用這些不同的sdk,對於我個人的編程技能的增長,很好的起到了互補的作用。

假設使用UINavigationController進行導航,有兩層界面結構,都使用自定義UIViewController的子類,分別為level1ViewController和level2ViewController。

1 單向交互。

第壹級level1ViewController負責創建第二級level2ViewController,並且設置level2ViewController相關的屬性,然後pushlevel2ViewController。偽代碼如下:

view plainprint?

[[level2ViewController alloc] init];

[level2ViewController setProp_1];

[level2ViewController setProp_2];

[level2ViewController setProp_3];

[level1ViewController. navigationController

pushViewController:level2ViewController];

[level2ViewController release];

這種情況下,從level1ViewController的角度來看,它只需要初始化level2ViewController,設置它的壹些屬性,調用push,然後就什麽都不用管了。從level2ViewController的角度來看,當它被push後,在它的生命期內,都不會影響level1ViewController,不需要調用level1ViewController的函數,也沒有事件需要通知level1ViewController。

這是最簡單的使用情形,也是最理想化的。在項目設計階段,應該盡量把代碼設計成這種結構(僅僅是盡量,並不是必須。而且,也並不是所有的使用場景都都可以設計成這樣的結構,畢竟這個太理想化了)。

2 雙向交互,***享數據

level1ViewController和level2ViewController使用***同的壹個數據shareData(壹定要理解這裏“***同”的含義------兩個controller***享同壹個數據,並且都有可能進行讀寫操作,尤其是寫操作。如果level2ViewController只對數據進行讀操作,那其實就跟前面1中的情形是壹致的)。第壹級level1ViewController負責創建第二級level2ViewController,並且設置level2ViewController相關的屬性,同時還要把shareData傳遞給level2ViewController,然後pushlevel2ViewController。偽代碼如下:

view plainprint?

<span style="font-size:16px;"></span><pre name="code" class="plain">[[shareData alloc] init];

[[level2ViewController alloc] init];

[level2ViewController setProp_1];

[level2ViewController setProp_2];

[level2ViewController setData: shareData];

[level1ViewController. navigationController

pushViewController:level2ViewController];

[level2ViewController release];

  • 上一篇:怎麽做可以動的元神紙片人
  • 下一篇:門鎖打不開怎麽辦?門鎖打不開的解決方法。
  • copyright 2024編程學習大全網