Как видно из названия статьи я расскажу вам о том, как потратив минимум сил и времени, превратить iPhone`ский UITabBarController в iPad`овский “UISplitViewController”
Для этого нам понадобится: проект(под iPad) с предыдущего моего рассказа, xib файл(под iPhone) с UITabBarController'ом и класс-контроллер к нему. Первое у меня было. Что касается второго и третьего, то я быстро создал xib в Interface Builder'е и дал ему незамысловатое имя iPhoneTabBar.xib.

Так как наш UITabBarController создавался лишь для демонстрации, то я…
вообщем ни
iPhoneTabBar.h
#import <UIKit/UIKit.h>
@interface iPhoneTabBar : UITabBarController { }
-(IBAction) showAlert;
@end
* This source code was highlighted with Source Code Highlighter.iPhoneTabBar.m
#import "iPhoneTabBar.h"
@implementation iPhoneTabBar
-(IBAction) showAlert{
UIAlertView* alert= [[UIAlertView alloc] initWithTitle:@"Title"
message:@"message"
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
[alert release];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
* This source code was highlighted with Source Code Highlighter.Ну что ж, начнем. Открыв проект с предыдущей моей статьи добавим в него наш TabBar. Выглядеть это будет так:

Теперь модифицируем наш класс MasterViewController.
В заголовочный файл добавим IBOutlet переменную — указатель на класс контроллер iPhoneTabBar. Это позволит нам при выборе пользователем пункта меню в левой части SplitViewControllera сообщать UITabBarу, что нужно показать соответсвующую страницу+ еще кое что.
MasterViewController.h
#import <UIKit/UIKit.h>
@class DetailViewController;
@class iPhoneTabBar;
@interface MasterViewController : UITableViewController {
IBOutlet DetailViewController* detailViewController;
IBOutlet iPhoneTabBar* iphoneTabBar;
}
@end
* This source code was highlighted with Source Code Highlighter.А теперь самое главное: в реализации класса MasterViewController следует добавить(или заменить, если он был раньше) метод viewDidLoad, который будет вызываться сразу после загрузки view. В нем мы помещаем на нашу detailView содержимое (если точней выражаться то саму view) UITabBarController'a, предварительно спрятав панельку UITabBar, которая внизу
-(void) viewDidLoad{
[super viewDidLoad];
iphoneTabBar.view.frame=CGRectMake(0, 0, detailViewController.view.frame.size.width,detailViewController.view.frame.size.height+49);
iphoneTabBar.tabBar.hidden=TRUE;
[detailViewController.view insertSubview:iphoneTabBar.view atIndex:1];
}
* This source code was highlighted with Source Code Highlighter.При выборе пользователем одной из ячеек таблицы(didSelectRowAtIndexPath) мы должны переключится на новую страницу UITabBar'a
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
iphoneTabBar.selectedViewController = [iphoneTabBar.viewControllers objectAtIndex:indexPath.row];
}
* This source code was highlighted with Source Code Highlighter.Последние штрихи: открыв в InterfaceBuilder'e iPhoneTabBar.xib и AlternativeSplitViewController.xib перетащим(или просто скопируем) с первого во второй UITabBarController. Еще надо связать нашу IBOutlet переменную с этим UITabBarController

Вот и все)
Несколько скриншотов ниже:




Плюсы:минимум времени на портирование + простота реализации.
Минусы: костыль… добавить нечего.
ссылка на исходники здесь и здесь
Мдя, какая то странная вышла статья…

