开发者

ViewDid appear not working xcode

Hai, I have created a tab based iRestaura project. I use 5 tab bar items. One of the tabbar name is Customer. When I tap on customer another tabbar is created with 3 viewcontroller programmatically. When I use view didload method tabbarcontroller is created successfully. But when i use view didAppear then tabbar controller is not created tabbar. In both of cases the other three viewcontroller which is created programmatically , there is not view did appear is not working. But all of case I need to use viewDidAppear method . Plz anyone can help me... The viewDidAp开发者_JAVA百科pear method which not working is given bellow .....

- (void)viewDidAppear:(BOOL)animated 
{
    [super viewDidAppear:animated];
    UITabBarController *tabBarController1=[[UITabBarController alloc] init];

    CustomerListViewController *customerListViewController=[[CustomerListViewController alloc] init];
    customerListViewController.title=@"Customer List";
    UIImage *anImage1 = [UIImage imageNamed:@"customer.png"];
    UITabBarItem *theItem1 = [[UITabBarItem alloc] initWithTitle:@"CustomerList" image:anImage1 tag:0];
    customerListViewController.tabBarItem = theItem1;


    SelectedCustomerViewController *selectedCustomerViewController= [[SelectedCustomerViewController alloc] init];  
    selectedCustomerViewController.title=@"Selected Customer";
    UIImage *anImage3 = [UIImage imageNamed:@"selectedCustomer.png"];
    UITabBarItem *theItem = [[UITabBarItem alloc] initWithTitle:@"Selected Customer" image:anImage3 tag:1];
    selectedCustomerViewController.tabBarItem = theItem;

    InvoiceListViewController *invoiceListViewController=[[InvoiceListViewController alloc] init];
    invoiceListViewController.title=@"Invoice List";
    UIImage *anImage2 = [UIImage imageNamed:@"invoiceNo.png"];
    UITabBarItem *theItem2 = [[UITabBarItem alloc] initWithTitle:@"Invoice List" image:anImage2 tag:2];
    invoiceListViewController.tabBarItem = theItem2;

    NSMutableArray *controllers=[[NSMutableArray alloc] init];
    [controllers addObject:customerListViewController];
    //  [controllers1 addObject:vc1];
    [controllers addObject:selectedCustomerViewController];

    [controllers addObject:invoiceListViewController];
    ///[controllers1 addObject:vc4];
    tabBarController1.viewControllers=controllers;

    [self.navigationController setNavigationBarHidden:YES animated:YES];
    [[self view] addSubview:tabBarController1.view];
    for (int t=0; t<[controllers count]; t++)
    {
        NSLog(@"controller%@",[controllers objectAtIndex:t]);
    }

}


Try this:

Firstly use the below function on your Tabbar controller .m file:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    [viewController viewWillAppear:YES];
}

And in your "viewDidLoad" function of Tabbar controller .m file, use "localNavigationController.delegate = self;" as used in given example below.

UserListing *nearBy = [[UserListing alloc] init];
nearBy.tabBarItem.image = [UIImage imageNamed:@"icoTabNearby.png"];
nearBy.tabBarItem.title = @"Nearby";
localNavigationController = [[UINavigationController alloc] initWithRootViewController:nearBy];
localNavigationController.delegate = self;

Hope it works for you.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜