2

アプリの 1 つですべてを TDD しようとしています。ViewController がモーダルでポップアップしたかどうかを確認する方法はありますか?

のように、論理分岐で私が呼び出す場合:

[self presentModalViewController:myModalControl];

提示しているviewcontrollerでこれをテストする方法はありますか?

私は試した:

[mainVC_SUT presentedViewController] 

[mainVcSUT modalViewController] 

しかし、どちらも nil として返されます。mainVC_SUT は、プレゼンテーションを行うビューコントローラーです。

4

2 に答える 2

0

次のように確認してください:

 if ([self.parentViewController.modalViewController isEqual:self])
    NSLog(@"I'm modal view controller!");
else 
    NSLog(@"I'm a push view controller!");
于 2012-12-27T06:56:05.050 に答える
0
-(BOOL)isModal {

    BOOL isModal = ((self.parentViewController && self.parentViewController.modalViewController == self) || 
                    //or if I have a navigation controller, check if its parent modal view controller is self navigation controller
                    ( self.navigationController && self.navigationController.parentViewController && self.navigationController.parentViewController.modalViewController == self.navigationController) || 
                    //or if the parent of my UITabBarController is also a UITabBarController class, then there is no way to do that, except by using a modal presentation
                    [[[self tabBarController] parentViewController] isKindOfClass:[UITabBarController class]]);

    //iOS 5+
    if (!isModal && [self respondsToSelector:@selector(presentingViewController)]) {

        isModal = ((self.presentingViewController && self.presentingViewController.modalViewController == self) || 
                   //or if I have a navigation controller, check if its parent modal view controller is self navigation controller
                   (self.navigationController && self.navigationController.presentingViewController && self.navigationController.presentingViewController.modalViewController == self.navigationController) || 
                   //or if the parent of my UITabBarController is also a UITabBarController class, then there is no way to do that, except by using a modal presentation
                   [[[self tabBarController] presentingViewController] isKindOfClass:[UITabBarController class]]);

    }

    return isModal;        

}

クレジット: http://www.allenwei.cn/ios-determine-current-view-is-a-modal/

于 2012-12-27T07:24:27.557 に答える