2010-08-30 27 views
0

我有一個應用程序使用了一些視圖,它們之間的交換非常尷尬,所以我認爲這可能是一個想法,使一些代碼會自動進入編號頁面,加載相應的視圖,然後根據該視圖執行需要執行的任何設置。我想出了以下內容。我設置的測試頁已交換到OK,甚至可以正確設置代理,但它不會對頁面內容執行任何設置操作,例如更改其包含的標籤上的文本或輕彈切換切換到ON。我已經一步一步地完成了程序,所有的命令都正在執行,但是結果並沒有顯示在最終的屏幕上。仍然難以正常交換視圖

currentMenu是一個UIViewController指針,我將目標放在當前使用的ViewController中,以便我知道稍後會解僱什麼。 clusterMenu是ClusterMenu類型的特定視圖控制器,我正在使用它作爲切換到的示例頁面。

對我而言,資源可能無法正確地使用此代碼正確釋放,但這是我稍後可以處理的事情,一旦我可以解決它爲什麼沒有正確設置的問題。

下面是代碼:

UIViewController *vanishing = currentMenu; 

if (page == 3){ 
    clusterMenu = [[ClusterMenu alloc] initWithHeader:clusterMap.header]; 
    [clusterMenu setDelegate:self]; 
    clusterMenu.editSwitch.on = clusterMap.editMode; 
    [clusterMenu changeEditStatus]; 
    currentMenu = clusterMenu; 
} 

[UIView transitionFromView:vanishing.view toView:currentMenu.view duration:0.5 
       options:UIViewAnimationOptionTransitionCurlUp 
       completion:^(BOOL done){[vanishing release];}]; 
+0

我發現了一些進一步的東西,我想更多地瞭解它。我看起來有點困難的原因是我試圖在視圖本身被添加到另一個視圖之前對視圖的子視圖進行編輯。這是否意味着在視圖層次結構中已經設置了視圖之前不會生成子視圖?無論如何,它似乎至少解決了部分問題,但更多的數據將不勝感激! – Ash 2010-08-30 15:41:11

回答

0

好問題。鑑於發佈的代碼有限,我很難指導您進行具體更改。相反,我建議看看蘋果示例projet(下面的鏈接),應該可以幫助你。您可以使用Apple架構,並在您的視圖控制器中簡單地使用角色來獲取頁面交換行爲。

http://developer.apple.com/iphone/library/samplecode/PageControl/Introduction/Intro.html

我希望這有助於。抱歉,我無法給你一個單行修正。 Andrew

+0

可悲的是,它沒有。我已經多次查看該代碼,並且使用了一種非常不同的技術。 我認爲我遇到的問題與NIB文件的加載方式和時間有關。我的懷疑是加載發生在它自己的線程中,所以後續的命令很可能會被忽略,因爲NIB實際上並不在內存中。如果我是對的,那意味着我必須找到某種停止程序執行的方法,直到加載完成,或者將附加代碼附加到命令上,一旦NIB完全在內存中後執行該命令。 謝謝嘗試! – Ash 2010-08-30 15:32:07

+0

有趣。好的,我認爲你不想停止程序執行。相反,看一下initWithCoder是NSCoding協議的一部分。作爲一個例子,該協議由UIView和UIViewController訂閱。這可能是放置init代碼的好地方。另請閱讀本指南瞭解更多詳情:http://developer.apple.com/iphone/library/documentation/cocoa/conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW8 – 2010-08-30 15:51:04

+0

謝謝,會做!我告訴你,蘋果數據庫對於特定的對象引用是可以的,但它確實需要更多(也更容易找到)教程。 – Ash 2010-08-30 16:04:49

0

將您的初始化命令放在視圖的init方法中,並等待它被調用。不要停止,因爲這會阻止視圖加載,而是退出當前的方法。

在Cocoa中,你不告訴操作系統該做什麼,你等待它告訴你。

+0

我試過的第一件事。沒有工作。不知道爲什麼。我已經完全改變了方向,並且它正在工作,所以我不會爲了什麼而擔心太多。感謝您的信息,但。 – Ash 2010-08-31 00:09:34