2010-08-05 38 views
0

在iphone中發送數據到上一個視圖的可能方式是什麼?沒有使用Appdelegate。因爲我的視圖類有機會再次實例化。發送數據到iphone中的上一個視圖

+0

當你說「先前的視圖」時,你的意思是「一個隱藏在另一個視圖之後的現有視圖」或「視圖類當前不存在作爲實例化對象」嗎? – 2010-08-05 18:37:25

+0

上一個視圖是仍然顯示的視圖,當前視圖是頂部的透明視圖。 – thndrkiss 2010-08-05 18:51:25

回答

0

如果你想與之通信的視圖是父視圖(如以前的觀點的看法控制器就是你創建這個視圖的地方),那麼你可能想要處理在前面的視圖控制器中關閉視圖。當您這樣做時,您可以讀取已更改的數據,並使用新數據更新以前的視圖控制器。

然後在上一個視圖控制器的viewWillAppear:方法中,更新實際視圖以反映視圖控制器的當前狀態。

編輯:我剛剛注意到你的newView是透明的。如果是這種情況,那麼你當然想要通過你的視圖控制器路由所有的邏輯。您應該一次只有一個視圖控制器具有可見視圖。

3

我相信最好的方法是使用NSNotificationCenter類。 基本上你所做的就是向通知中心註冊一個對象(作爲觀察者)。

因此,例如,如果您有對象ABA註冊爲觀察員。現在讓我們假設A是您正在討論的「前一個」對象,您可以讓B向通知中心發送通知(數據或消息),然後通知對象A(以及任何其他註冊的觀察者)。

實施例:

在文件ClassA.m寄存器,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didSomething:) name:@"SomethingHappened" object:nil]; 

didSomething是接收由對象B發送通知的方法。這看起來像

- (void) didSomething: (NSNotification *) notify { 
... 
} 

最後,你從任何方法發送下面的消息中ClassB.m通知/發送數據到對象A

[[NSNotificationCenter defaultCenter] postNotificationName:@"SomethingHappened" object:self userInfo:your_data]; 

好像令人費解,但它在我看來,最好的方法(和很簡單,一旦你明白了:))。