我有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 alloc] initWithNibName:@“nextviewcontroller”bundle:nil];
[nextView.view setFrame:self.view.bounds];
[nextView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:nextView animated:YES];
[nextView release];
}
并且通过在rootview中选择行来成功导航,但是nextview将出现在整个屏幕中,这将隐藏rootview控制器的视图(tableview)所以我如何在左侧显示rootview并且只在右侧显示detailview的大小?
thanx任何帮助。
答案 0 :(得分:1)
我不确定我的答案是否正确,但我会尝试......
我看到你使用“presentModalViewController”来引入视图...... 根据这里的文档,click here它说
模态视图控制器的视图始终以全屏显示
所以我想这就是为什么你的视图会全屏显示的原因。如果你想使用Modal视图控制器,它说对于Ipad你可以使用modalPresentationStyle属性更改表示类型,可以从这个链接访问modalPresentationStyle。
看看它是否对你有帮助。
此外,如果您找到了问题的答案,请将其发布,以便它可以帮助遇到您问题的其他人。
答案 1 :(得分:0)
我有同样的问题
你可以发布你的代码吗?我尝试设置框架但没有任何事情发生:全屏问题已消除,但该新视图的框架位于中间 所以我会稍后再尝试
-(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];