перейдите к другому представлению из detailview в splitview, но РАЗМЕР этого нового представления занимает весь экран

#xcode #ipad #ios4 #uisplitviewcontroller

#xcode #iPad #ios4 #uisplitviewcontroller

Вопрос:

У меня есть splitview, и он содержит rootviewcontroller (подкласс uitableviewcontroller) и detailview (подкласс viewcontroller). Теперь у меня есть подобный код в rootview (подкласс tableviewcontroller).

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

if (delegate != nil) {
    [delegate viewchange];
}
  

}

и в detailviewcontroller (подкласс viewcontroller справа).

 -(void)viewchange{
  

nextviewcontroller * NexTView = [[выделение nextviewcontroller] initWithNibName:@пакет «nextviewcontroller»: ноль];

 [nextView.view setFrame:self.view.bounds];
[nextView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:nextView animated:YES];

[nextView release];
  

}

и навигация выполняется успешно путем выбора строки в rootview, но этот nextview отображается на весь экран, который скроет представление контроллера rootview (tableview), так КАК я могу показать rootview с левой стороны, а навигацию только с правой стороны размером detailview?

спасибо за любую помощь.

Ответ №1:

Я не уверен, является ли мой ответ правильным, но я попробую…

Я вижу, что вы используете «presentModalViewController» для ввода представления … согласно документации в этом,нажмите здесь, там говорится, что

представление контроллера модального представления всегда представлено в полноэкранном режиме

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

Взгляните и посмотрите, поможет ли это вам.

Кроме того, если вы нашли ответ на свой вопрос, пожалуйста, опубликуйте его, чтобы он помог другим, кто столкнется с вашим вопросом.

Комментарии:

1. Вы правы и спасибо, что уделили этому время, похоже, мне нужно использовать навигационный контроллер, и я попробовал UIModalPresentationPageSheet, UIModalPresentationFormSheet, проблема с полноэкранным режимом устранена, но рамка этого нового представления находится посередине, поэтому я попробую подробнее позже.

2. нет проблем .. если вы считаете, что ответы правильные, примите ответы, если это возможно… вы можете сделать это, нажав на «галочку» рядом с ответом…

Ответ №2:

У меня такая же проблема

проблема с полноэкранным режимом устранена, но рамка этого нового представления находится посередине, поэтому я попробую подробнее позже

можете ли вы опубликовать свой код? я пытаюсь установить рамку, но ничего не происходит:

     -(void)showFlipView
{
    UIViewController *controller = [[UIViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
    //controller.delegate = self;
    controller.modalPresentationStyle = UIModalPresentationCurrentContext;
    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [controller.view setFrame:self.view.bounds];
    /*controller.view.frame = CGRectMake(300.0, 
                                       0.0, 
                                       self.readerDetailView.frame.size.width, 
                                       self.readerDetailView.frame.size.height);
    */
    [self presentModalViewController:controller animated:YES];

    [controller release];
}
  

РЕДАКТИРОВАТЬ: решено! я должен установить рамку ПОСЛЕ анимации:

     UIViewController *controller = [[UIViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
//controller.delegate = self;
controller.modalPresentationStyle = UIModalPresentationCurrentContext;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
controller.view.frame = CGRectMake(self.readerDetailView.frame.origin.x, 
                                   self.readerDetailView.frame.origin.y, 
                                   self.readerDetailView.frame.size.width, 
                                   self.readerDetailView.frame.size.height);
[controller release];