从splitview中的detailview导航到另一个视图,但该新视图的SIZE占据整个屏幕

时间:2011-04-07 06:59:29

标签: 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 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任何帮助。

2 个答案:

答案 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];