2009-05-20 33 views
1

我想加載一個UITabViewController中不是視圖的筆尖。這裏就是我現在已經和它不工作,但它應該給你的我想要什麼的想法:如何在UITabViewController中加載不是視圖的NIB?

- (IBAction)PlaylistButtonPressed:(id)sender 
{ 
    MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil]; 

    [self.view addSubview:music.view]; 

    [music release];  
} 

當您在視圖按下一個按鈕,這個想法是加載另一個筆尖,MusicPick,這將作爲一個子視圖加載,挑選一些東西然後回到這裏。任何幫助表示讚賞,或新的想法。

回答

1

添加更多的細節。

您可以使用addSubView或通過將控制器推入UITabBarController的視圖來將視圖添加到現有的UIViewController的視圖。在後一種情況下,UITabBarController必須[是]具有RootViewController的UINavigationController。

我懷疑,這是你的意思。因此你會做類似下面的事情。

- (IBAction)PlaylistButtonPressed:(id)sender 
{ 
    // Load UIViewController from nib 
    MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil]; 

    // Add to UINavigationController's stack, i.e. the view for this UITabBarController view 
    [self.navController pushViewController:music animated:YES]; 

    // Release music, no longer needed since it is retained by the navController 
    [music release]; 
} 

這裏假設你有一個UINavigationController作爲您的UITabBarController一個觀點,這就是所謂navController。

如果您只是想將UIView添加到UITabBarController的UIViewController視圖(例如覆蓋圖)中,那麼您可以使用addSubView,因爲您已經想清楚了,不需要UINavigation Controller。

3

您不能直接將子視圖添加到UITabBarController。這些控制器之一工作的方式是存儲一個UIViewController s的列表,並在選項卡中顯示每個控制器。但是,它們並不是真正的子視圖。除了更新此列表外,您不會真正修改標籤欄控制器本身。

因爲你似乎想要做的是提供一個臨時視圖,以允許用戶選擇一些選項,這些選項會影響標籤欄控制器中的某些內容,所以我建議您將此視圖從您的筆尖呈現爲模式視圖超過選項卡式視圖。看看UIViewControllerpresentModalViewController:animated:dismissModalViewControllerAnimated:方法。假設MusicPickUIViewController的一個子類,只需在分配之後將其傳遞給此方法(例如,您在上面的第一行代碼中完成了這一操作),然後UIKit將負責處理其餘的部分。請記住,當您完成從中選擇的值或用戶輸入的數據時,將釋放該MusicPick實例。

相關問題