如何关闭 ORKTaskViewController 并呈现我选择的视图控制器?



我花了24小时试图找到这个问题的解决方案。当用户在我的应用程序上点击注册时,他们将不得不回答一系列调查问题(我使用 ORKorderedtask(研究工具包(创建的(。调查完成后,我希望显示主页,但是当我测试应用程序并完成调查时,它会直接返回到注册页面。这是我的代码:

1.呈现有序任务视图控制器;

let registrationTaskViewController = ORKTaskViewController(task:  registrationSurvey, taskRun: nil)
registrationTaskViewController.delegate = self
self.present(registrationTaskViewController, animated: true, completion: nil)

2.关闭任务视图控制器(这不起作用(;

func taskViewController(_ taskViewController: ORKTaskViewController, didFinishWith reason: ORKTaskViewControllerFinishReason, error: Error?) {
self.dismiss(animated: false) {
let home = homePageViewController()
self.present(home, animated: true, completion: nil)
}

提前谢谢。

在不知道堆栈中的所有视图控制器的情况下,我建议不要关闭您的注册页面视图控制器。而是在注册屏幕顶部显示您的HomePageViewController。只需将您的委托方法更改为以下内容:

func taskViewController(_ taskViewController: ORKTaskViewController, didFinishWith reason: ORKTaskViewControllerFinishReason, error: Error?) {
let home = homePageViewController()
self.present(home, animated: true, completion: nil)
}

或者,您甚至可以在提交ORKTaskViewController后在完成块中展示您的HomePageViewController。这种方法的好处是,当用户关闭调查时,他们将立即看到HomePageViewController

let registrationTaskViewController = ORKTaskViewController(task:  registrationSurvey, taskRun: nil)
registrationTaskViewController.delegate = self
self.present(registrationTaskViewController, animated: true, completion: {
let home = homePageViewController()
self.present(home, animated: true, completion: nil)
})

还有几点:

• 类应以大写字母开头(即 HomePageViewController(。这是每个有经验的开发人员都使用的惯例,苹果甚至推荐。

• 最终,我建议使用导航控制器来处理这些转换。使用导航控制器,您可以使用推送 segue 实现更好的"流程"。只是感觉好多了。

相关内容

  • 没有找到相关文章

最新更新