在iphone中發送數據到上一個視圖的可能方式是什麼?沒有使用Appdelegate。因爲我的視圖類有機會再次實例化。發送數據到iphone中的上一個視圖
0
A
回答
0
有幾種方式來實現數據共享,與辛格爾頓Objetcs是最流行的一種:
0
如果你想與之通信的視圖是父視圖(如以前的觀點的看法控制器就是你創建這個視圖的地方),那麼你可能想要處理在前面的視圖控制器中關閉視圖。當您這樣做時,您可以讀取已更改的數據,並使用新數據更新以前的視圖控制器。
然後在上一個視圖控制器的viewWillAppear:方法中,更新實際視圖以反映視圖控制器的當前狀態。
編輯:我剛剛注意到你的newView是透明的。如果是這種情況,那麼你當然想要通過你的視圖控制器路由所有的邏輯。您應該一次只有一個視圖控制器具有可見視圖。
3
我相信最好的方法是使用NSNotificationCenter
類。 基本上你所做的就是向通知中心註冊一個對象(作爲觀察者)。
因此,例如,如果您有對象A
和B
。 A
註冊爲觀察員。現在讓我們假設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];
好像令人費解,但它在我看來,最好的方法(和很簡單,一旦你明白了:))。
當你說「先前的視圖」時,你的意思是「一個隱藏在另一個視圖之後的現有視圖」或「視圖類當前不存在作爲實例化對象」嗎? – 2010-08-05 18:37:25
上一個視圖是仍然顯示的視圖,當前視圖是頂部的透明視圖。 – thndrkiss 2010-08-05 18:51:25