#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];