【问题标题】:Dismiss Modal View from uitabbarController view从 uitabbarController 视图中关闭模态视图
【发布时间】:2012-06-08 07:27:52
【问题描述】:

我呈现了一个模态视图,其中呈现的视图包含一个标签栏控制器。视图显示正确,但是当我将dismissModalViewController添加到标签栏视图控制器中的按钮时,它没有被关闭。视图没有发生任何事情。

我怎么能关闭那个模态视图控制器?

【问题讨论】:

  • 你如何关闭它? [self dismissViewControllerAnimated:NO completion: nil] 是我对此的最佳猜测。请注意,您应该使用 dismissViewControllerpresentViewController 而不是 ...ModalViewController,因为它们在 iOS 5.1 中已被弃用。

标签: iphone objective-c uitabbarcontroller modalviewcontroller


【解决方案1】:

呈现视图控制器也应该是处理模态视图控制器解除的控制器。您应该使用委托来通知呈现视图控制器它可以关闭它呈现的视图控制器:

在模态视图控制器中:

@protocol SomeProtocol<NSObject>
- (void)didFinishDoingWhatItNeedsToDo:(id)sender;
@end

@interface ModalViewController : UIViewController
@property (nonatomic, weak) id <SomeProtocol> delegate;
@end

@implementation

- (IBAction)buttonClicked:(id)sender {

    [self.delegate didFinishDoingWhatItNeedsToDo:self];

}

然后在呈现视图控制器中:

@interface SomeObject : UIViewController <SomeDelegate>
@end

@implementation

- (void)someMethod {

    ModalViewController *mvc = [[ModalViewController alloc] init];
    mvc.delegate = self;

    [self presentViewController:mvc animated:YES completion:nil];
}

- (void)didFinishDoingWhatItNeedsToDo:(id)sender {

    [self dismissViewControllerAnimated:YES completion:nil];
}

【讨论】:

    【解决方案2】:

    当你向控制器展示标签栏时,你一定用过:

    [self presentModalViewController:newTabBarController animated:YES];
    

    所以当你想辞退时,你必须说,

    [self.tabBarController dismissModalViewControllerAnimated:YES]
    

    【讨论】:

      【解决方案3】:
      [[self parentViewController] dismissModalViewControllerAnimated:YES];
      

      【讨论】:

      • 为什么要关闭parentViewController
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      相关资源
      最近更新 更多