菜鸟教程小白 发表于 2022-12-11 18:47:24

ios - 关闭 View Controller 不会返回到前一个 View Controller


                                            <p><p>根据我的应用程序的需要,在推送另一个带有动画的 ViewController 后,我正在展示一个 ViewController 。代码如下:</p>

<pre><code>    func pushViewController() {
    let viewcontroller = UIStoryboard(name: &#34;Home&#34;, bundle: nil).instantiateViewController(withIdentifier: &#34;homeSearchIndentifier&#34;) as? HomeSearchViewController
    let searchViewController = UIStoryboard(name: &#34;Home&#34;, bundle: nil).instantiateViewController(withIdentifier: &#34;searchRideIdentifier&#34;) as? SearchRideViewController
    searchViewController?.parentView = .homeLandingPage
    let duration = 0.4
    let transition: CATransition = CATransition()
    transition.duration = duration
    transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    transition.type = kCATransitionPush
    transition.subtype = kCATransitionFromBottom
    self.navigationController!.view.layer.add(transition, forKey: kCATransition)
    self.navigationController?.pushViewController(viewcontroller!, animated: false)
    viewcontroller?.present(searchViewController!, animated: true, completion: nil)
}
</code></pre>

<p>在呈现的 ViewController 中,我分配了一个侧边菜单 Controller ,因为我需要在向右滑动时显示侧边菜单:</p>

<pre><code>override func viewDidLoad() {
    super.viewDidLoad()
    self.addSearchListScreen()
    self.locationManager.delegate = self
    yourLocation.layer.sublayerTransform = CATransform3DMakeTranslation(7, 0, 0)
    let leftViewController = UIStoryboard(name: &#34;SideBar&#34;, bundle: nil).instantiateViewController(withIdentifier: &#34;sideBar&#34;) as? SideBarViewController
    let slideMenuController = SlideMenuTrackerController(mainViewController: self, leftMenuViewController: leftViewController!)
    AppDelegate.sharedInstance().window?.rootViewController = slideMenuController
    leftViewController?.mainViewController = self
    slideMenuController.automaticallyAdjustsScrollViewInsets = true
    AppDelegate.sharedInstance().window?.backgroundColor = UIColor(red: 236.0, green: 238.0, blue: 241.0, alpha: 1.0)
    AppDelegate.sharedInstance().window?.makeKeyAndVisible()
}
</code></pre>

<p>现在我在这个 ViewController 中有一个自定义的后退按钮。单击它时,我需要关闭 ViewController 并显示 ViewController 的显示位置。名称为“HomeSearchViewController”</p>

<p>为了解除我在按钮操作中写了以下代码:</p>

<pre><code>    func navigateToPreviousController() {
      self.dismiss(animated: true, completion: nil)
}
</code></pre>

<p>但这并没有解除 ViewController 。我可以知道是什么问题吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>为了关闭 ViewController ,您的 ViewController 应嵌入导航 Controller 中。</p>

<p>例如:</p>

<pre><code>let controller =storyboard.instantiateViewController(withIdentifier: &#34;storyboardidentifier&#34;) as! yourviewcontroller      
    let navController = UINavigationController(rootViewController: controller)
    present(navController, animated: true, completion: nil)
</code></pre>

<p>然后在呈现的 ViewController 上,如果您使用以下代码,它将关闭 ViewController 。</p>

<pre><code>func dismissButtonPressed(){
   self.dismiss(animated: true, completion: nil)
}
</code></pre>

<p>干杯!!</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 关闭 ViewController 不会返回到前一个 ViewController ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46432773/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46432773/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 关闭 View Controller 不会返回到前一个 View Controller