2016-11-14 2 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() не правильный подход для достижения этой цели, вместо того, чтобы, реализовать новую функцию, которая должна содержать код, отвечающий за загрузку данных в компонентах пользовательского интерфейса, например:

override func viewDidLoad() { 
    super.viewDidLoad() 

    reloadUI() 
} 

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

И где-то в вашем коде (где вы хотите перезагрузить) вместо вызова viewDidLoad() вы должны вызвать метод reloadUI().

Надеюсь, это помогло.

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 дозвонились после инициализации, а не каждый раз, когда вы нажимаете на вкладку пункт