3

我有两个视图:一个只有一个按钮(视图 1),另一个包含一个带有搜索栏的表格视图(屏幕 2)。当用户在视图 1 中单击该按钮时,我希望视图 1 翻转并显示屏幕 2。

视图 2 位于导航控制器内部,顶部有一个导航栏。

以下是我现在所拥有的。过渡动画有效并翻转到第二个屏幕,但视图 2 缺少来自 NavigationBar 的 SearchBar 和标题。两者都设置在视图 2 内。


[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];

navigationController = [[UINavigationController alloc] init];

bestbuyProducts = [[BestBuyProductsViewController alloc] initWithNibName:@"BestBuyProductsViewController" bundle:nil];  
[navigationController pushViewController:bestbuyProducts animated:NO];
[navigationController.view setFrame: [self.view bounds]];
[bestbuyProducts release];

[self.view addSubview:navigationController.view];

[UIView commitAnimations];

谢谢

4

2 回答 2

4

要启动您的 UINavigationController 未正确初始化。像这样使用 initWithRootViewController: 方法:

bestbuyProducts = [[BestBuyProductsViewController alloc] initWithNibName:@"BestBuyProductsViewController" bundle:nil];  

// Initialise the navigation view with the bestbuyProducts view controller
navigationController = [[UINavigationController alloc] initWithRootViewController:bestbuyProducts ];

然后尝试使用modal view transition来做一个翻转动画,上手更简单,更安全:

[navigationController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:navigationController animated:YES];

[navigationController release];
[bestbuyProducts release];
于 2010-02-27T12:10:55.653 回答
1

好的,这是正确的版本


navigationController = [[UINavigationController alloc] initWithRootViewController:bestbuyProducts];
[bestbuyProducts setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:navigationController animated:YES];

于 2010-02-27T19:34:42.183 回答