Панель вкладок, перезагружается при каждом нажатии клавиши tab

#objective-c #ios #cocoa-touch #uitabbar

#objective-c #iOS #cocoa-touch #uitabbar

Вопрос:

Я создаю приложение, в котором у меня есть пять вкладок. Мне нужно перезагружать каждый контроллер каждый раз, когда нажата вкладка.

Ответ №1:

Поместите код, который вы хотите перезагрузить, в представлении появится или в представлении появлялось все представление.

Всего наилучшего.

Комментарии:

1. спасибо за ответ …. но мне нужно сделать так, чтобы при каждом нажатии tab перезагружалась вся страница…

2. Мой код уже был в viewDidAppear () и он не обновляется при нажатии той же кнопки панели вкладок. Ответ кажется неполным.

Ответ №2:

Пример:

    // AppDelegate ( and <UITabBarControllerDelegate> )
   // Creation tabbar and controllers               
    UIViewController* myController1 = [[UIViewController alloc] init] autorelease];
    UINavigationController* nav1 = [[[UINavigationController alloc] initWithRootViewController:myController1] autorelease];

    UIViewController* myController2 = [[UIViewController alloc] init] autorelease];
    UINavigationController* nav2 = [[[UINavigationController alloc] initWithRootViewController:myController2] autorelease];

    NSArray *array = [NSArray arrayWithObjects: myController1, myController2, nil];

    UITabBarController* tab = [[[UITabBarController alloc] init] autorelease];
    tab.viewControllers = array;
    tab.delegate = self; // <-- don't forget set delegate for TabBarController


    // TabBarController Delegate methods   
    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
    {
            // Reload selected VC's view
        [viewController.view setNeedsDisplay];
    }
  

Ответ №3:

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    //other codes

    [self.tabBarController setDelegate:self]

    //other codes
    }

// UITabBarControllerDelegate method.
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    if ([viewController respondsToSelector:@selector(reloadDataTemp)]) {
        [(YourViewController *)viewController reloadData];
    }
}
  

Ответ №4:

Итак, напишите метод для перерисовки элементов на вашей странице и вызывайте его при нажатии tab. Я отредактирую этот пост, если вы предоставите больше информации о проблеме, с которой вы столкнулись.

Ответ №5:

если вы используете uitableview, используйте это

 [tableview reloaddata];
  

Ответ №6:

Я надеюсь, вы говорите о webview. webview должен перезагружаться при каждом переходе к элементу панели вкладок. Ну, просто реализуйте [webview reload] в делегате панели вкладок.

Ответ №7:

Swift 5

 
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
        let vc = self.viewControllers?[1] as? stepVC // ViewController That need to be loaded
        vc?.viewDidLoad()

    }