Objective c 选项卡栏,每次按下选项卡时重新加载

Objective c 选项卡栏,每次按下选项卡时重新加载,objective-c,ios,cocoa-touch,uitabbar,Objective C,Ios,Cocoa Touch,Uitabbar,我正在创建一个有五个选项卡的应用程序。每次按下tab键时,我都需要重新加载每个控制器 将要重新加载的代码放在所有视图的视图中将出现或视图中确实出现的位置 祝您一切顺利。因此,请编写一个方法来重新绘制页面上的元素,并在tab press上调用它。如果您提供有关所面临问题的更多信息,我将编辑此帖子。如果您正在使用uitableview,请使用此功能 [tableview reloaddata]; 例如: // AppDelegate ( and <UITabBarControllerD

我正在创建一个有五个选项卡的应用程序。每次按下tab键时,我都需要重新加载每个控制器

将要重新加载的代码放在所有视图的视图中将出现或视图中确实出现的位置


祝您一切顺利。

因此,请编写一个方法来重新绘制页面上的元素,并在tab press上调用它。如果您提供有关所面临问题的更多信息,我将编辑此帖子。

如果您正在使用uitableview,请使用此功能

[tableview reloaddata];
例如:

   // 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];
    }
//AppDelegate(和)
//创建选项卡栏和控制器
UIViewController*myController1=[[UIViewController alloc]init]autorelease];
UINavigationController*nav1=[[UINavigationController alloc]initWithRootViewController:myController1]自动释放];
UIViewController*myController2=[[UIViewController alloc]init]autorelease];
UINavigationController*nav2=[[UINavigationController alloc]initWithRootViewController:myController2]自动释放];
NSArray*数组=[NSArray数组及其对象:myController1,myController2,nil];
UITabBarController*选项卡=[[[UITabBarController alloc]init]自动释放];
tab.viewControllers=数组;

tab.delegate=self;// 我希望您所说的是webview,每次导航选项卡栏项目时,webview都应该重新加载。只要在选项卡栏代理中实现[webview重新加载]。

Swift 5

 - (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];
    }
}

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

    }

谢谢你的回复。。。。但我需要让tab每次按下都重新加载整个页面……我的代码已经在ViewDidDisplay()中,当按下同一个tab栏按钮时它不会刷新。答案似乎不完整。