2011-06-28 85 views
3

我以一個登錄屏幕開始。然後,在用戶登錄後,我加載了一個帶有UITabBArController的Viewcontroller。問題是viewdidAppear:不會調用tabBarController中的任何單個viewController。UIViewController中的UITabBarController = viewDidAppear:未調用

我有一種感覺,這不是最好的編程習慣,所以沒有人有任何想法如何改善我的代碼結構或如何解決我的問題?

+0

這看起來好像沒問題,你可以發佈在控制標籤欄的viewController中使用的代碼嗎? –

+0

你如何在視圖控制器的「內部」添加標籤欄控制器? –

回答

3

我想你的麻煩來自UIViewController和UITabBarController的不正確使用。

UITabBarController作爲多個視圖控制器的容器而存在。它本身可能不應被包含。它被設計成坐在視圖控制器層次結構的頂部。因此,第一步可能是重新安排你的應用程序,以便UITabBarController不再處於其他任何狀態,並查看是否會讓你變得更直觀。

之後,slev的呈現登錄視圖的方法聽起來像是正確的。

+0

您應該能夠以模態方式呈現標籤欄控制器,但是ICBW ... –

+0

在iOS5中,應該支持API來定製ui視圖控制器,以便它可以充當UITabBarController等容器。 – pulkitsinghal

+0

對不起,這是不正確的。 UITabBarController可以嵌套。如果你重寫自己的方法,只要確保你調用[super viewWillAppear]。 – Teddy

2

爲什麼不製作基於TabBarController的應用程序,然後在應用程序啓動時立即調用模態屏幕(用於登錄)?完成登錄後,只需關閉它即可讓TabBarController成爲關鍵窗口。

+0

有沒有機會幫助我呢? http://stackoverflow.com/questions/6509078/dismissing-uipickerview-with-done-button-uitoolbar-help – Legolas

+0

@Legolas。是的,夥計,當然。我以前看過它,並認爲其他人已經有了正確的答案,但不知道它會給你那個異常錯誤 – justin

+0

我基本上有兩個pickerviews。 1個DatePickerView和另外3個組件的PickerView。點擊textField將其展現出來。爲了辭職,我使用'[textField resignFirstResponder]'。這適用於DatePickerView而不是其他pickerview(它引發錯誤) – Legolas

0

你可以嘗試手動調用子視圖控制器上的viewdidAppear:當它在rootviewcontroller上調用時也手動調用子視圖控制器的子視圖控件。

+1

這裏是龍。 –

3

我有一個問題,因爲我是子類也UITabBarControler在那裏我已經覆蓋viewDidAppear無需調用[超級viewDidAppear:...]

調用此之後,viewDidAppear叫也分 - 視圖 - 控制器內。

+0

對我來說同樣的問題 - 我認爲最好的做法是始終將[super viewDidSomething]留在方法的第一行,然後在下面添加代碼?因此,忽略基本呼叫可能會弄亂呼叫層次結構中的某些內容? - 有沒有人會關注此事? – Miros

相關問題