presentedViewController

presentedViewController

我试图测试一个会呈现 View Controller 的 segue。但是,它总是失败。如何等待segue完成?请协助。

[self.viewController performSegueWithIdentifier:@"mySegueName" sender:self.viewController];
XCTAssertNotNil(self.viewController.presentedViewController, @"Failed to show modal view");

最佳答案

问题是您试图在 View 不在 UIViewController 层次结构中的 UIWindow 上呈现。这是我的解决方案:

- (void)testExample {

    //
    // Arrange
    // Storyboard
    //
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    //
    // Arrange
    // View Controller
    //
    UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
    [UIApplication sharedApplication].keyWindow.rootViewController = viewController;

    //
    // Act
    //
    [viewController performSegueWithIdentifier:@"ModalSegue" sender:nil];

    //
    // Assert
    //
    XCTAssertNotNil(viewController.presentedViewController);

}

关于ios - XCTest 如何执行呈现模态视图的转场并测试presentedViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20632140/

10-13 05:39