Как откинуть пользователя на домашнюю страницу без использования навигации в приложении IOS
Фон - у меня есть приложение Ios Native, для которого я автоматизирую тестовые сценарии в XCUITest. Текущий поток тестовых примеров в классе является устройством настройки, установите приложение, откройте приложение-> вход в систему -> выполнить действие
для второго метода тестового примера он выходит из первого действия первого тестового примера с помощью навигации и запускается
Есть ли способ, которым после завершения каждого метода теста запускается прямой переход на домашнюю страницу без навигации? Навигация требует дополнительного времени для запуска большого набора.
2 ответа
Если вы хотите добиться более быстрой навигации для ваших тестов пользовательского интерфейса, вы можете воспользоваться преимуществом запуска приложения с аргументами запуска.
Редактировать схему> Выполнить> добавить "UITEST" в аргументы, переданные при запуске
Например в ваших кодах определите
class AppDelegate: UIResponder, UIApplicationDelegate {
var uiTestModeKey = "UITEST"
static var uiTestMode = false
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
if (CommandLine.arguments.contains(uiTestModeKey)) {
AppDelegate.uiTestMode = true
}
return true
}
}
и в той части, где вы хотите быстро вернуться назад, вы можете определить что-то вроде:
func onActionComplete() {
if (AppDelegate.uiTestMode) {
navigationController?.popToRootViewController(animated: false)
//Or set the window to a new instance like
//UIApplication.shared.keyWindow?.rootViewController = HomeViewController()
}
}
Swift 4.2
Я думаю, что не понимаю ваш вопрос, но если вы хотите перейти на домашнюю страницу без навигации, вы можете использовать эту строку кода:
UIApplication.shared.keyWindow?.rootViewController = HomeViewController()
и если вы не хотите прыгать с небольшой анимацией, используйте это:
DispatchQueue.main.async {
guard let window = UIApplication.shared.keyWindow else { return }
UIView.transition(with: window, duration: 0.5, options: .allowUserInteraction, animations: {
UIApplication.shared.keyWindow?.rootViewController = HomeViewController()
}, completion: { completed in
})
}