在dismissModalViewControllerAnimated之后:我的tabbar消失了

时间:2011-03-07 11:38:31

标签: iphone cocoa-touch ios4

我有一个由三层视图控制器组成的应用程序:UITabBarController => UINavigationController => UIViewController中。它们都是用代码生成的,而不是使用IB生成的。根据通常的设计指南,标签栏位于底部。在我的UIViewController中,我使用此代码来呈现modalViewController:

myModalVC = [[MyModalViewController alloc] init];
[self.navigationController presentModalViewController:myModalVC animated:YES];

此工作正常,模态视图控制器弹出并覆盖整个屏幕。

然而,当在模态视图控制器中按下按钮时,我运行:

[self dismissModalViewControllerAnimated:YES];

模态视图控制器动画了。但是我可以看到原始的UIViewcontroller视图,但标签栏完全消失。我已经google了很多,但我找不到有同样问题的人。

4 个答案:

答案 0 :(得分:3)

您应该将模态视图控制器委派给父视图控制器。 [self dismissModalViewControllerAnimated:YES];应该由委托而不是模态视图本身完成,父视图负责解雇模态视图。

答案 1 :(得分:2)

实际上我通过谷歌搜索得到了更多。我使我的标签栏控制器成为app委托的属性,当它呈现模态vc时,它会这样做

UIApplication *myApp = [UIApplication sharedApplication];
noIBAppDelegate*appDelegate = (noIBAppDelegate*)myApp.delegate;
[appDelegate.tabBarController presentModalViewController:myModalVC animated:YES];

然后它通过这段代码解散它

UIApplication *myApp = [UIApplication sharedApplication];
noIBAppDelegate*appDelegate = (noIBAppDelegate*)myApp.delegate;
[appDelegate.tabBarController dismissModalViewControllerAnimated:YES];

这会修复标签栏的消失。

答案 2 :(得分:0)

尝试

[self.navigationController dismissModalViewControllerAnimated:YES];

答案 3 :(得分:0)

感谢您的回答!我遇到了同样的问题,但是我在Swift写作,所以我想我可以通过查看你的解决方案来解决我的问题。我只需要使用这两行来解决问题。没有别的东西需要。

 postAsync: function(address, model) {
     var deferred = $q.defer();
     var token = tokenstorage.getBearer();
     if (token == null) {
       deferred.reject("token expired")
     } else {
       $http({
         method: 'POST',
         url: url + address,
         data: model,
         headers: {
           'Content-Type': 'application/json',
           'Accept': 'application/json',
           'Authorization': token
         }
       }).success(function(data) {
         deferred.resolve(data);
       }).error(function(data, status, headers, config) {
         deferred.reject(null);
       });
     }
     return deferred.promise;

tabBarController?.presentViewController(viewController, animated: true, completion: nil)

我还应该提到行:tabBarController?.delegate = self,在我的NavigationController的viewDidLoad函数中。