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 在隐藏后重新出现?