У меня есть несколько вопросов:
1) Когда вы говорите «создал мой собственный UITabBarController», вы имеете в виду, что вы подклассировали UITabBarController?
2) Как делается вызов для представления контроллера модального вида? Есть ли кнопка или что-то, что вызывается, чтобы сделать вызов модального контроллера представления?
Вы говорите, что контроллеры "находятся в главном окне" и что, когда вы представляете модальное представление, вы "переносите вид контроллера панели вкладок вперед". Это смущает меня. Контроллеры представления должны «принадлежать» контроллеру панели вкладок.
Я создал небольшой проект, и он работал на меня, поэтому вот что я сделал:
1) Я создал подкласс UITabBarController:
@interface MyTabBarController : UITabBarController
{
}
- (IBAction)presentModalView:(id)sender;
- (void)dismissModalview;
@end
@implementation MyTabBarController
- (IBAction)presentModalView:(id)sender
{
MyModalViewController* myModalView = [[MyModalViewController alloc] initWithNibName:@"ModalView" bundle:nil];
[myModalView setTbc:self];
[self presentModalViewController:myModalView animated:YES];
}
- (void)dismissModalview;
{
[self dismissModalViewControllerAnimated:YES];
}
@end
2) Затем для моего контроллера модального вида я создал подкласс UIViewController:
@interface MyModalViewController : UIViewController
{
MyTabBarController* tbc;
}
@property (retain) MyTabBarController* tbc;
- (IBAction)returnToTabBar:(id)sender;
@end
@implementation MyModalViewController
@synthesize tbc;
- (IBAction)returnToTabBar:(id)sender;
{
[tbc dismissModalview];
}
@end
3) Я перетащил контроллер панели вкладок в MainWindow.xib, установил для его владельца файла MyTabBarController и добавил контроллеры представления для обеих вкладок (я установил цвета фона каждой из них на разные цвета с помощью инспектора). В контроллере представления второй вкладки я добавил кнопку и установил ее целевое значение для действия «presentModalView:» в MyTabBarController.
4) Я создал новый xib, содержащий представление с именем ModalView, и установил для его владельца файла MyModalViewController. Я установил цвет фона вида, отличный от двух выше, и добавил кнопку к виду. Я установил в качестве цели кнопки действие returnToTabBar: в MyModalviewController.
Очевидно, мне пришлось добавить представление панели вкладок к подпредставлению окна в делегате приложения. Это сработало для меня и представило модальный контроллер представления, когда я был на второй вкладке, и когда я отклонил его, я был возвращен на вторую вкладку в контроллере панели вкладок.
Надеюсь, это поможет!