我在使用iOS時遇到了一些問題。我使用協議在兩個視圖控制器之間來回傳遞數據,並手動切換視圖。我的問題是,當我關閉頂部視圖時,不會再次調用底部視圖的viewDidLoad。由於我從第二個視圖向第一個視圖發送信息,因此我需要調用viewDidLoad,以便處理我傳遞的信息。如果你對如何做到這一點有任何想法,任何幫助表示讚賞。謝謝。如何手動調用viewDidLoad?
回答
使用viewDidLoad
-(void)viewDidAppear:(BOOL)animated
代替
還有一件事,當我調用一個函數時,我的協議正在返回一個空值。這有什麼共同的原因嗎? – CoffeeIsProgramming 2013-05-07 02:09:54
@Adam請張貼一些代碼(也許是另一個問題)。很難說這個信息 – 2013-05-07 03:01:40
我傳遞數據來回使用協議的兩個視圖控制器和手動切換視圖之間。我的問題是,當我關閉頂部視圖時,不會再次調用底部視圖的viewDidLoad。因爲我是從我的第二個觀點將信息發送到我的第一個觀點,我需要viewDidLoad中被稱爲
不,你不這樣做,你認爲你做的事實,讓我想到別的可能會錯誤這裏。
考慮一下:如果你是真正的從第二視圖控制器將數據傳回從第一,那麼第一個視圖控制器有的數據,現在可以自行更新。它存在,它有一個觀點。所以它應該在現場更新自己,因爲您將數據傳遞給它。然後,當您關閉第二個視圖控制器時,第一個視圖控制器的視圖將會出現 - 已經更新。實際上,解散第二個視圖控制器只是揭示了第一個視圖控制器的視圖,它一直存在,並且即使它沒有顯示也被更新。
嗯,事情是我需要一個地方來「處理」正在傳回的數據。舉例來說,我將它傳遞給一個字符串數組,我想對它做一些事情,比如將它傳遞給模型。我怎麼做,如果不在viewDidLoad?調用觸摸事件以將視圖放置在前景中。在我打電話來介紹第二個視圖之後,我是否可以在這個觸摸事件中處理它? – CoffeeIsProgramming 2013-05-07 02:11:38
如果您確實傳回數據,則通過調用第一個視圖控制器上的方法來完成此操作。所以現在第一個視圖控制器正在運行!它以某種方法接收字符串數組,並可以在該方法中執行任何操作。 – matt 2013-05-07 02:13:14
就是這樣。我的觸摸事件調用了我的第一個視圖。然後,我點擊第二個視圖上的按鈕,即設置了某個特定的數據。當第二個視圖被解散時,我想讓這些數據通過。 – CoffeeIsProgramming 2013-05-07 02:18:41
- (void)viewDidLoad {
[super viewDidLoad];
}
只有當視圖控制器首次加載到內存中時才被調用一次。這是您想要實例化任何實例變量並構建任何視圖,這些視圖在該視圖控制器的整個生命週期中都存在。
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
}
被調用時的觀點實際上是可見的,並且可以在視圖控制器的生命週期中被多次調用(當模態視圖控制器駁回例如,視圖再次變得可見)
- 1. 何時調用viewDidLoad?
- 2. iOS新手 - viewDidLoad
- 3. 如何手動調用SimpleWebServiceInboundGateway?
- 4. 如何手動調用SEL_MenuHandler
- 5. InstantiateViewController調用ViewDidLoad
- 6. 如何手動調用jQuery手機
- 7. 如何在UITableViewCell中調用viewDidLoad?
- 8. 如何在viewDidLoad中調用IBAction?
- 9. 如何不在uinavigationcontroller中調用viewdidload?
- 10. 如何讓viewDidLoad多次調用
- 11. viewDidLoad每次調用
- 12. viewDidLoad未被調用
- 13. 調用TableView:didSelectRow:AtIndexPath in viewDidLoad
- 14. 從appDelegate調用viewdidload
- 15. 在調用viewDidLoad中()
- 16. 調用從viewDidLoad中
- 17. 如何使用viewDidLoad
- 18. 如何手動調用DataAnnotationsModelValidatorProvider(禁用後)?
- 19. ViewDidLoad沒有用UITabbarController調用
- 20. 使用applicationDidBecomeActive調用viewDidLoad
- 21. 如何手動調用ItemView函數?
- 22. 如何手動調用dbus.service.signal修飾符?
- 23. 如何手動調用ValidationAttributes? (DataAnnotations和ModelState)
- 24. 如何在rxJava中手動調用observer.onNext
- 25. 如何手動創建Drupal.ajax調用?
- 26. 來自ViewDidLoad的MBProgressHUD調用
- 27. 在initWithNibName之前調用ViewDidLoad?
- 28. viewDidLoad在applicationDidFinishLaunching之前調用
- 29. 爲什麼relaodData調用viewDidLoad
- 30. viewDidLoad在init之前調用?
另一種可能解決方案是讓這兩個視圖控制器共享相同的模型,但我不確定如何做到這一點。 – CoffeeIsProgramming 2013-05-07 01:53:30
將您的邏輯移出viewDidLoad。你不應該這樣稱呼它。一個更好的地方可能是viewDidAppear :,但實際上,因爲你已經有了一個用於通信的協議,所以最好的地方是使用該協議來傳達一些改變。然後第一個視圖將負責在接收到該協議消息時自行更新。 – Anurag 2013-05-07 01:55:06