ios4 sdk ipad — можем ли мы поместить два VIEWS в окно?

Я хочу разместить два вида рядом, как в приложении MAIL для iPad. Возможно ли это с UINavigationController?

Я хотел бы разместить два UINavigationController рядом

Не беспокойтесь о синтаксисе, я просто хочу знать, возможно ли это

UINavigationConroller *left;  
UINavigationController *right;  

[WIndow addSubView: left];  
[WIndow addSubView:right];  

person Arcadian    schedule 01.11.2010    source источник
comment
Для iPad это контроллер с разделенным представлением, а не два отдельных контроллера.   -  person Aaron Saunders    schedule 02.11.2010


Ответы (1)


UIWindow наследуется непосредственно от UIView, поэтому в него можно добавить несколько объектов, хотя, если вы добавите несколько контроллеров представления, только один из них будет получать события вращения.

Правильный способ сделать презентацию типа Mail — использовать UISplitViewController, который автоматически обрабатывает переход между режимами двух и одного просмотра. Шаблон Xcode для «Приложения на основе разделенного представления» даже настроит вас так, чтобы у вас была кнопка для просмотра левого табличного представления в качестве UIPopoverController, если вы находитесь в портретной ориентации.

РЕДАКТИРОВАТЬ: пример кода с контроллером разделенного представления:

// a tiny little method to vend a new navigation controller; following Cocoa patterns, because it
// has 'new' in the name it vends an owning reference (ie, not autoreleased, retain count +1)
- (UINavigationController *)newController
{
    UITabBarController *tabBar = [[UITabBarController alloc] init];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tabBar];
    [tabBar release];

    return navController;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Override point for customization after application launch.

    // generate a split view controller
    UISplitViewController *splitView = [[UISplitViewController alloc] init];

    // grab a couple of navigation controllers
    UINavigationController *navController1 = [self newController];
    UINavigationController *navController2 = [self newController];

    // add the navigation controllers to the split view controller
    splitView.viewControllers = [NSArray arrayWithObjects:navController1, navController2, nil];
    [navController1 release];
    [navController2 release];

    // and put the whole thing on screen
    [window addSubview:splitView.view];
    [window makeKeyAndVisible];

    return YES;
}
person Tommy    schedule 01.11.2010
comment
Если у меня есть два представления UINavigationController и я добавляю их в окно; можно ли их посадить рядом? некоторые виды не выглядят так, как будто они загружаются или занимают весь экран. Я НЕ использую перо, а добавляю его вручную в код. - person Arcadian; 02.11.2010
comment
Вы действительно должны использовать UISplitViewController. Я добавлю пример к ответу, так как форматировать комментарии сложно... - person Tommy; 02.11.2010