UISegmentedControl 重新加载某个页面

Posted

技术标签:

【中文标题】UISegmentedControl 重新加载某个页面【英文标题】:UISegmentedControl reload certain page 【发布时间】: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() 执行此操作,但是当您多次执行此操作时,这会降低应用程序的速度。

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

【问题讨论】:

【参考方案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 方法会在初始化后被调用,而不是每次你点击一个标签项时

【讨论】:

以上是关于UISegmentedControl 重新加载某个页面的主要内容,如果未能解决你的问题,请参考以下文章

重新加载 UITableView 而不重新加载 Section Header

重新加载节而不重新加载节标题

UITableView 在 iOS 7.1 上无法正确重新加载

如何让 UIRefreshControl 在隐藏后重新出现?

UISegmentedControl 和 UIPanGestureRecognizer?

UI控件(UISegmentedControl)