如何在swift 3中从标签栏移动时重新加载页面?

Posted

技术标签:

【中文标题】如何在swift 3中从标签栏移动时重新加载页面?【英文标题】:How to reload the page while moving from tab bar in swift 3? 【发布时间】:2017-12-05 06:22:10 【问题描述】:

在运行应用程序后,我点击了标签栏中的购物车,当时购物车中没有添加任何物品,因此它显示您的购物车是空的,但是在购物车中添加物品后,我也点击了标签栏上的购物车图标它像以前一样显示,并且购物车页面没有重新加载,谁能帮我解决这个问题?

我在我的主视图控制器中使用过这段代码

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) 
        let tabBarIndex = tabBarController.selectedIndex
        if tabBarIndex == 1 
            let  navController = self.tabBarController?.viewControllers![1] as! UINavigationController
            let secondViewController = navController.viewControllers[0] as! AddToCartViewController
            secondViewController.firstTimeTableSkip = true
            self.tabBarController?.selectedIndex = 1
        
    

在我的购物车视图控制器中,我使用了这段代码

override func viewWillAppear(_ animated: Bool) 
        if firstLoginCheck == true 
        checkOutButton.isHidden = false
        checkOutButton.layer.cornerRadius = 5
        if conditonCheck == true || conditonCheck == nil
        checkOutButton.isHidden = true
        checkOutButton.layer.cornerRadius = 5
        tableDetails.isHidden = true
        emptyView.isHidden = true
        tableDetails.separatorInset = UIEdgeInsets.zero
        loginCheck = UserDefaults.standard.integer(forKey: "CustomerLogin")
        activityIndicator.startAnimating()
        emptyView.isHidden = true
        if loginCheck == 1 
            let token = UserDefaults.standard.value(forKey: "CustomerLoginToken")
            self.customerKeyToken = token!
            print(self.customerKeyToken!)
            if itemCode != nil 
                self.customerAddToCartItemsDownloadJsonWithURl(cartApi: customerAddtoCartApi)
       customerCartItemsDownloadJsonWithURl(cartApi: customerCartApi)
            
            else 
                customerCartItemsDownloadJsonWithURl(cartApi: customerCartApi)
            
        else if (loginCheck == 0) || (loginCheck == nil) 
            if let token = UserDefaults.standard.value(forKey: "user_token")  
                self.key = token as? String
                let defaultValue = UserDefaults.standard.value(forKey: "MenuButton") as? String
                if (defaultValue == "Tab" && itemCode == nil) 
                    check = true
           cartCountApiDownloadJsonWithURL(cartCountApi: getCartApi)
                
             else 
                gettingKeyFromJsonWithURL(keyApi: keygettingApi)
            
            if itemCode != nil && key != nil 
                self.PostingKeyFromJsonWithURL(PostingApi: postingKeyApi)
            
            if key != nil 
                cartCountApiDownloadJsonWithURL(cartCountApi: getCartApi)
                emptyView.isHidden = true
            
            
        

【问题讨论】:

您可以在viewWillAppear 中输入您想要重新加载的代码。 购物车页面中已经有代码,但我现在检查了 bool 的条件是如何在单击标签栏 @iPatel 时传递数据失败 请发布您的代码 我已经添加了我的代码@HakikatSingh 【参考方案1】:

而不是使用通知或委托或相关,viewWillApear() 方法将更适合重新加载视图。只需将您想要重新加载的代码放入viewWillApear()

【讨论】:

【参考方案2】:

您可以在购物车视图出现时设置通知,并在通知触发时设置重新加载方法。

【讨论】:

已经我在视图中放置了代码会出现,但是这里发生的事情首先是在检查视图中的条件之后会出现然后标签栏代表正在调用所以它返回 nil 所以它失败了@Rakesh Patel【参考方案3】:

检查您为“购物车”设置徽章图标计数的代码部分。您需要在相同的代码流中持久化购物车数据。

由于您在 viewWillAppear 中进行布尔检查,因此请在执行检查之前检索购物车数据。 如果您没有与任何服务器同步,最好使用 CoreData 进行本地持久性。

【讨论】:

我已经在视图中放置了代码会出现,但是点击标签栏购物车图标后会发生什么,首先检查视图中的条件将出现在购物车页面中,然后标签栏代表正在调用这是在主页中,所以它返回 nil 所以它失败了@TinselBoy

以上是关于如何在swift 3中从标签栏移动时重新加载页面?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 5 - 用户第二次单击标签栏按钮后,需要帮助在视图控制器 1 上重新加载 Web 视图

如何在 Swift 中从同一站点重新加载新的 JSON 数据?

在Vue 3中单击路由器链接时如何在不重新加载页面的情况下切换侧边栏

如何在swift 4中从WKWebView中的网页中删除DIV标签?

Objective C - WebView无法从顶部重新加载

目标C - 再次点击标签栏项目时,如何再次重新加载网页视图?