以编程方式动画另一个viewcontroller故事板场景

时间:2013-07-24 23:36:10

标签: objective-c uiviewcontroller uinavigationcontroller

我正在制作一个展示facebook / path左手导航的教程

http://hsapkota.com.au/index.php/blog/ios-iphone-ipad/28-tutorial-creating-gmail-facebook-like-menu-navigation-in-ios

一切都按预期工作,但我想在导航表中添加一个关闭导航按钮,但我似乎无法触发相同的方法或从导航类访问故事板场景

这是我尝试执行任务的一种方式的示例

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    NSString * storyboardName = @"MainStoryboard_iPhone";
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];

UINavigationController * vc = [storyboard instantiateViewControllerWithIdentifier:@"main"];



[UIView animateWithDuration:0.2f
                      delay:0.0
                    options:UIViewAnimationCurveLinear

                 animations:^{

                     CGAffineTransform trans = CGAffineTransformMakeTranslation(200.0, 0.0);


                     vc.view.transform= trans;
                 }
                 completion:^(BOOL finished){

                 }
 ];

}

'main'是我想要动画的storyboardID,但是在'vc.navigationController'上执行NSLog时,我得到一个NULL返回 - 虽然日志'vc'返回与正确的storyboard场景关联的类名

任何帮助都会受到赞赏我只是无法理解它!

-edit 我以为我能够在我的变换中编辑调用superview的'主视图'     self.view.superview.transform = trans

然而,这会激活两个视图控制器,并且渲染“主视图”无用,因为现在此视图中没有任何轻击手势响应......

还有什么想法?

1 个答案:

答案 0 :(得分:0)

好吧,经过大量的努力,我设法得到了一些工作

我需要联系appdelegate才能访问上下文中的另一个viewcontroller

我的代码现在是

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

AppDelegate* appDel = (AppDelegate*)[[UIApplication sharedApplication] delegate];
MainView *mv = (MainView *)appDelegate.window.rootViewController;


[UIView animateWithDuration:0.2f
                      delay:0.0
                    options:UIViewAnimationCurveLinear

                 animations:^{

                     CGAffineTransform trans = CGAffineTransformMakeTranslation(-0.0, 0.0);

                    mv.view.transform= trans;
                 }
                 completion:^(BOOL finished){


                 }
 ];

}