2016-11-14 48 views
0

我正在为我的UISegmentedControl使用第三方库。该页面被初始化如下: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()来做这件事,但是当你多次使用它时,这会让应用程序变慢。

有没有更正确的方法来做到这一点?在此先感谢

回答

0

我认为调用viewDidLoad()不是实现这一目标的正确方法,相反,实施应该包含负责UI组件加载数据代码的新功能,例如:

override func viewDidLoad() { 
    super.viewDidLoad() 

    reloadUI() 
} 

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

并且在代码中的某处(您要重新加载的地方),您应该调用reloadUI()方法,而不是调用viewDidLoad()

希望这有助于。

0

尝试你点击一个选项卡项目这个

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方法被调用初始化一次,每次都不