Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用平滑推送转换和不使用navigationcontroller更改ViewController_Ios_Objective C_Animation_Ios6_Presentviewcontroller - Fatal编程技术网

Ios 使用平滑推送转换和不使用navigationcontroller更改ViewController

Ios 使用平滑推送转换和不使用navigationcontroller更改ViewController,ios,objective-c,animation,ios6,presentviewcontroller,Ios,Objective C,Animation,Ios6,Presentviewcontroller,我正在尝试从viewcontrollerview1切换到viewcontrollerview2,并在一秒钟内将view1推到左侧。我在iPhone应用程序中做了一个简单的说明 -->-->--> 我正在使用故事板并为iOS 6及更高版本开发。我不使用segues。目前,我正在使用此代码在Xcode中从view1更改为view2,而不使用任何动画: SecondViewController *viewTwo = [self.storyboard instantiateViewControllerW

我正在尝试从
viewcontroller
view1切换到
viewcontroller
view2,并在一秒钟内将view1推到左侧。我在iPhone应用程序中做了一个简单的说明

-->-->-->

我正在使用故事板并为iOS 6及更高版本开发。我不使用segues。目前,我正在使用此代码在Xcode中从view1更改为view2,而不使用任何动画:

SecondViewController *viewTwo = [self.storyboard instantiateViewControllerWithIdentifier:@"View2"];
[self presentViewController:viewTwo animated:NO completion:nil];
我正在寻找可以用替换现有代码的代码。使用推送转换从view1更改为view2的代码

注意:我没有使用
导航控制器
!只是普通的
ViewControllers
。我更喜欢用代码来做这件事

编辑:我知道如果我使用导航控制器,这将非常容易做到,但问题是我已经完成了故事板的构建,并且我已经使用普通视图控制器构建了所有内容。这就产生了我的第二个问题:

有什么方法可以简单地将我的
UIViewControllers
转换为
UINavigationControllers
。无需删除我的
UIViewController
并仅使用
UINavController
重新构建它


回答:我通过在项目中实现导航控制器解决了问题。我之前完全误解了导航控制器的整个概念,但现在我明白了。所以我的问题解决了

考虑使用容器视图控制器。以下是一个教程:
考虑使用容器视图控制器。以下是一个教程:
为视图2设置动画。使用此代码

-(void)ViewNavigationOnLeftTabs
{
   self.view.frame=CGRectMake(420, 0,self.view.frame.size.width,self.view.frame.size.height);

    [UIView beginAnimations:@"Anim2" context:nil];
    [UIView setAnimationDuration:0.4];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [UIView setAnimationDelegate:self];
    self.view.frame=CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height);
    [UIView commitAnimations];
}
-(IBAction)nextView
{
    SecondViewController *sampleV=[[SecondViewController alloc] init];
    [self.view addSubview:sampleV.view];
    [self ViewNavigationOnLeftTabs];
}
在这里,我为secondViewController添加了过渡效果,与您的要求完全相同。您需要在动画期间处理背景视图(view1)


我已经在我的应用程序中使用了此代码,它对我来说运行良好

为视图2设置动画。使用此代码

-(void)ViewNavigationOnLeftTabs
{
   self.view.frame=CGRectMake(420, 0,self.view.frame.size.width,self.view.frame.size.height);

    [UIView beginAnimations:@"Anim2" context:nil];
    [UIView setAnimationDuration:0.4];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [UIView setAnimationDelegate:self];
    self.view.frame=CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height);
    [UIView commitAnimations];
}
-(IBAction)nextView
{
    SecondViewController *sampleV=[[SecondViewController alloc] init];
    [self.view addSubview:sampleV.view];
    [self ViewNavigationOnLeftTabs];
}
在这里,我为secondViewController添加了过渡效果,与您的要求完全相同。您需要在动画期间处理背景视图(view1)


我已经在我的应用程序中使用了此代码,它对我来说运行良好

为什么不想使用导航控制器?如果你隐藏导航栏,你会得到你想要做的。我非常喜欢一个非导航控制器来做这件事,因为我的应用程序差不多完成了,我不想重新开始构建故事板,因为这将是一个地狱般的工作。为什么我更喜欢不使用导航控制器的答案?你的控制器需要处理旋转吗?如果是这样,您需要使用自定义容器控制器api,或者使用一些非常复杂的代码才能使其正常工作。旋转是什么意思?如果您是指从垂直位置旋转视图,那么不,我不是指旋转。您知道可以隐藏navigationcontroller吗?为什么不想使用navigation controller?如果你隐藏导航栏,你会得到你想要做的。我非常喜欢一个非导航控制器来做这件事,因为我的应用程序差不多完成了,我不想重新开始构建故事板,因为这将是一个地狱般的工作。为什么我更喜欢不使用导航控制器的答案?你的控制器需要处理旋转吗?如果是这样,您需要使用自定义容器控制器api,或者使用一些非常复杂的代码才能使其正常工作。旋转是什么意思?如果你是指从垂直位置旋转视图,那么不,我不是指旋转。你知道有可能隐藏navigationcontroller吗?这不是我想要的。我不希望添加任何容器视图控制器,因为我已经完成了整个故事板及其所有视图控制器的设置。这意味着我正在寻找代码,用我在问题中解释的动画呈现view2。这并不是我想要的。我不希望添加任何容器视图控制器,因为我已经完成了整个故事板及其所有视图控制器的设置。这意味着我正在寻找代码来呈现view2和我在问题中解释的动画。谢谢回复!我通过实现导航控制器解决了我的问题,不应该发布这个问题。但既然我已经发布了它,我将接受并更新你的答案,因为它回答了我原来的问题,即使我没有使用你的答案。苹果公司从iOS 4开始就不鼓励使用这些方法,你应该改用基于块的方法。谢谢你的回复!我通过实现导航控制器解决了我的问题,不应该发布这个问题。但既然我已经发布了它,我将接受并更新你的答案,因为它回答了我最初的问题,即使我没有使用你的答案。苹果公司从iOS 4开始就不鼓励使用这些方法,你应该改用基于块的方法。