【问题标题】:UISegmentedControl reload certain pageUISegmentedControl 重新加载某个页面
【发布时间】:2016-11-14 14:42:38
【问题描述】:

我正在为我的 UISegmentedControl 使用第三方库。页面初始化如下:

func carbonTabSwipeNavigation(carbonTabSwipeNavigation: CarbonTabSwipeNavigation, viewControllerAtIndex index: UInt) -> UIViewController {
    switch index {
    case 0:
        return self.storyboard!.instantiateViewControllerWithIdentifier("FolderOverviewController") as! FolderOverviewController
    case 1:
        return self.storyboard!.instantiateViewControllerWithIdentifier("TopFoldersTab") as! TopFoldersTab
    case 2:
        return self.storyboard!.instantiateViewControllerWithIdentifier("CategoriesFolderTab") as! CategoriesFolderTab
    default:
        return self.storyboard!.instantiateViewControllerWithIdentifier("CategoriesFolderTab") as! CategoriesFolderTab
    }

}

当我按下第三段时,用户可以进一步向下查看更多详细信息(通过同一页面上的子视图)。每次我再次选择第三段时,我都希望页面重新加载。 (回到原来的 CategoriesFolderTab 页面)。目前我正在使用ViewDidLoad() 执行此操作,但是当您多次执行此操作时,这会降低应用程序的速度。

有没有更正确的方法来做到这一点?提前致谢

【问题讨论】:

    标签: ios swift uisegmentedcontrol


    【解决方案1】:

    我认为调用viewDidLoad() 不是实现此目的的正确方法,而是实现一个新函数,该函数应包含负责在 UI 组件中加载数据的代码,例如:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        reloadUI()
    }
    
    func reloadUI() {
        // filling UI components with desired data, such as:
        // myLabel.text = "Hello World"
    }
    

    在你的代码中的某个地方(你想重新加载的地方),而不是调用viewDidLoad(),你应该调用reloadUI()方法。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      试试这个

      Let folderOverVC = self.storyboard!.instantiateViewControllerWithIdentifier("FolderOverviewController") as! FolderOverviewController
      Let topFoldersTab = self.storyboard!.instantiateViewControllerWithIdentifier("TopFoldersTab") as! TopFoldersTab
      Let categoriesFolderTab = self.storyboard!.instantiateViewControllerWithIdentifier("CategoriesFolderTab") as! CategoriesFolderTab
      
      
      
      func carbonTabSwipeNavigation(carbonTabSwipeNavigation: CarbonTabSwipeNavigation, viewControllerAtIndex index: UInt) -> UIViewController {
      switch index {
      case 0:
          return folderOverVC
      case 1:
          return topFoldersTab
      case 2:
          return categoriesFolderTab
      default:
          return categoriesFolderTab
      }
      
      }
      

      这会初始化视图控制器一次,因此它们各自的 viewDidLoad 方法会在初始化后被调用,而不是每次你点击一个标签项时

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-18
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-17
        • 2013-10-28
        • 1970-01-01
        相关资源
        最近更新 更多