UIView transitionFromView:带有两个tableview控制器的toView - 奇怪的位置错误

时间:2011-04-27 21:41:46

标签: iphone cocoa-touch

我有

UIButton *home = [UIButton buttonWithType:UIButtonTypeContactAdd];
[home addTarget:self action:@selector(addNewRoute:) forControlEvents:UIControlEventTouchDown];
UIBarButtonItem *cancelButton = [[[UIBarButtonItem alloc]
                                  initWithCustomView:home] autorelease];
self.navigationItem.rightBarButtonItem = cancelButton;
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.15 green:0.15 blue:0.49 alpha:1.0];

旋转:

- (void) addNewRoute:(id) sender
    {
       if (!routeAddIsActive) {
            [UIView transitionFromView:self.addRoutesView.view toView:self.view duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft  completion:nil];
        } else {
            [UIView transitionFromView:self.view toView:self.addRoutesView.view duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft  completion:nil];
        }
        routeAddIsActive = !routeAddIsActive;

    }

这是一个轮换视图:

if (!addRoutesView) {
    addRoutesView = [[AddRoutesTableViewController alloc] initWithStyle:UITableViewStylePlain];
    addRoutesView.managedObjectContext = self.managedObjectContext;
}

当我从视图开始旋转时:

enter image description here

我对新的UIView职位有一个奇怪的改变: 看起来iphone决定向下移动视图。 回来没关系,一切正常。

enter image description here

更新 现在我有这个代码的问题:

设置视图:

if (!addRoutesView) {
    addRoutesView = [[AddRoutesTableViewController alloc] initWithStyle:UITableViewStylePlain];
    addRoutesView.destinationsPushListView = self;
    addRoutesView.managedObjectContext = self.managedObjectContext;
    if (!addRoutesNavigationView) {
        addRoutesNavigationView = [[UINavigationController alloc] initWithRootViewController:addRoutesView];

更改destinationsPushListView中的视图

- (void) addNewRoute:(id) sender
{
self.addRoutesNavigationView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:addRoutesNavigationView animated:YES];

在addRoutesView中更改视图

- (void) addNewRoute:(id) sender
{
self.destinationsPushListView.navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:destinationsPushListView.navigationController animated:YES];

一切正常,视图已更改,所有更正,更改回来,然后,当我再次单击时,调用addNewRoute函数,应用程序停止并冻结,没有任何错误和日志。 我必须将导航栏保留在里面,这可能是控制旋转的最佳方式。

1 个答案:

答案 0 :(得分:1)

要直接回答您的问题,请检查您的相框。 transitionFromView:不应该移动任何东西,所以尝试在没有它的情况下切换视图,并检查所有内容是否排成一行。

此外,您似乎正在将另一个视图控制器的视图添加到当前视图控制器。您可能需要考虑使用带有翻转动画的模态视图控制器。要做到这一点,您需要做的就是将您的翻转修改为

addRoutesView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:addRoutesView animated:YES];

然后,您还需要实现一些委托或通知设置来回转。如果你打算走那条路,那么http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

就会有一些很好的文档