2009-05-20 11 views
1

Я хочу загрузить наконечник, который не является видом в UITabViewController. Вот что у меня есть сейчас, и это не работает, но это должно дать вам представление о том, что я хочу:Как загрузить NIB, который не является представлением в UITabViewController?

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

    [self.view addSubview:music.view]; 

    [music release];  
} 

При нажатии кнопки в представлении, идея заключается в том, чтобы загрузить другое перо, MusicPick, который будет загружаться как подзаголовок, выбрать что-то и вернуться сюда. Любая помощь приветствуется, или новые идеи.

ответ

1

Чтобы добавить немного больше деталей.

Вы можете добавить представление к существующему представлению UIViewController с помощью addSubView или нажав контроллер на представление UITabBarController. В последнем случае UITabBarController должен быть [был] UINavigationController с RootViewController.

Я подозреваю, это то, что вы имеете в виду. Поэтому вы сделали бы что-то вроде следующего.

- (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 к представлению UIViewController в UITabBarController (например, оверлей), то вы можете просто использовать addSubView, как вы уже выяснили, нет необходимости в контроллере UINavigation.

3

Вы не можете добавить subview непосредственно к UITabBarController. То, как работает один из этих контроллеров, заключается в сохранении списка UIViewController s и отображении каждого из них на вкладке. Но они на самом деле не поддаются рассмотрению, за sé. Вы вообще не изменяете сам контроллер панели вкладок, кроме как обновлять этот список.

Поскольку вам кажется, что вы хотите сделать, это временное представление, позволяющее пользователю выбрать некоторые параметры, которые будут влиять на что-то в контроллере панели вкладок, я бы предложил вам представить это представление из вашего nib в виде модального вида над с вкладками. Взгляните на UIViewController's presentModalViewController:animated: и dismissModalViewControllerAnimated: методов. Предполагая, что MusicPick является подклассом UIViewController, просто передайте его этому методу после того, как он был выделен (например, вы сделали это в первой строке кода выше), а UIKit позаботится обо всем остальном. Не забудьте освободить этот экземпляр MusicPick, когда вы закончите вытягивать из него выбранные значения или введенные пользователем данные.