Версия для iPhone и iPad в одном? - PullRequest
0 голосов
/ 02 июня 2011

Я разработал приложение для iPhone, и теперь я хотел бы реализовать UISplitViewController, который будет запускаться при запуске, если приложение запускается на iPad.

Чтобы начать работу разделенного вида, я скопировал большую часть кода из проекта MultipleDetailViews от Apple.

У меня есть несколько вопросов, если можно:

  • 1) Можно ли повторно использовать классы, которые я создал для приложения iPhone, для отображения в качестве «подробного» представления контроллера разделенного представления?
  • 2) У меня контроллер загрузки разделенного вида программно, но маленькая кнопка для отображения всплывающего окна не появляется. Я пробовал много способов и отладил, и код, который запускается для представления кнопки popover, работает, но ничего не происходит. Есть идеи?
  • 3) Я создал .xib, который правильно подключен с помощью контроллера splitview. Можно ли получить эту XIB для загрузки при запуске вместо программного создания splitviewcontroller?

При запуске - это код, который я сейчас использую:

    // manually create a split view controller
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    // launch the ipad view
    RootViewControllerPad *firstVC = [[[RootViewControllerPad alloc]
                                       initWithNibName:nil bundle:nil] autorelease];


    IndicatorsPad* secondVC = [[[IndicatorsPad alloc]
                                         initWithNibName:@"IndicatorsPad" bundle:nil] autorelease];


    splitViewCtrl = [[UISplitViewController alloc] init];
    splitViewCtrl.viewControllers = [NSArray arrayWithObjects:firstVC, secondVC, nil];

    self.window.rootViewController = self.splitViewCtrl;
    [window addSubview:splitViewCtrl.view];

}

Контейнеры с разделенным видом отображаются, но, как я уже сказал, они не работают должным образом. Он должен автоматически представлять кнопку для всплывающего окна, когда ориентация меняется на портретную, и он этого не делает.

Когда я выбираю один из элементов в левом меню, он не отображает требуемый символ xib в подробном представлении, даже если код (вероятно) правильный:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

/*
 Create and configure a new detail view controller appropriate for the selection.
 */
NSUInteger row = indexPath.row;

NSLog(@"Row %i selected",row);

UIViewController <SubstitutableDetailViewController> *detailViewController = nil;

if (row == 5) {
    IndicatorsPad *newDetailViewController = [[IndicatorsPad alloc] initWithNibName:@"IndicatorsPad" bundle:nil];
    detailViewController = newDetailViewController;
}

if (row == 6) {
    SensPad *newDetailViewController = [[SensPad alloc] initWithNibName:@"SensPad" bundle:nil];
    detailViewController = newDetailViewController;
}

// Update the split view controller's view controllers array.
NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController, detailViewController, nil];
splitViewController.viewControllers = viewControllers;
[viewControllers release];

// Dismiss the popover if it's present.
if (popoverController != nil) {
    [popoverController dismissPopoverAnimated:YES];
}

// Configure the new view controller's popover button (after the view has been displayed and its toolbar/navigation bar has been created).
if (rootPopoverButtonItem != nil) {
    [detailViewController showRootPopoverButtonItem:self.rootPopoverButtonItem];
}

[detailViewController release];

}

Я потратил пару дней на эти проблемы и действительно буду признателен за руководство. Я прочитал несколько вопросов и ответов на этом форуме и дошел до того, что я чувствую, что мне нужно задать эти конкретные вопросы.

Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...