При нажатии на панель вкладок вид элемента не меняется в iphone - PullRequest
1 голос
/ 25 января 2012

Я хочу использовать панель вкладок в одном из представлений для моего приложения - ПРОСМОТР НА ОСНОВЕ.поэтому я перетащил панель вкладок и добавил еще 2 элемента панели вкладок, чтобы сделать его полностью 4.

Я пометил каждый элемент вкладки 1,2,3,4 с Myservices, History, RecentRequest и меткой профиля соответственно.

аналогичным образом я добавил 4 класса для каждой вкладки с именами Myservices.h, .m, .xib и такими же именами, как и для других вкладок.

В этом выше вкладки 3подкласс UITableViewController и вкладка профиля является подклассом UIVIewController.когда я нажимаю на вкладку профиля, в ней отображается tableView, и я также вносил некоторые изменения в другие представления, но при нажатии на любой вкладке отображается тот же экран для всех вкладок, поэтому любой может сообщить мне, где я ошибаюсь.

Это мой код. Я добавил этот код в класс с именем Homepage.h и .m, а панель вкладок перетаскивается в homepage.xib

// CODE homepage.h

IBOutlet UITabBar *myTabBar; 
UIViewController *myServicesViewController;
UIViewController *historyViewController;
UIViewController *recentRequestViewController;
UIViewController *profileViewController;
UIViewController *currentViewController;

@property (nonatomic, retain) IBOutlet UITabBar *myTabBar; 
@property (nonatomic, retain) UIViewController *myServicesViewController;
@property (nonatomic, retain) UIViewController *historyViewController;
@property (nonatomic, assign) UIViewController *currentViewController;
@property (nonatomic, assign) UIViewController *profileViewController;
@property (nonatomic, retain) UIViewController *recentRequestViewControll

//HomePage.m

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {

    NSLog(@"didSelectItem: %d", item.tag);
  [self activateTab:item.tag];

}

-(void)activateTab:(int)index

{

 switch (index) {
 case 1:
        if (myServicesViewController == nil) {

            self.myServicesViewController=

            [[MyServices alloc] initWithNibName:nil bundle:nil];
        }

        [self.view insertSubview:myServicesViewController.view belowSubview:myTabBar];
        if (currentViewController != nil)
            [currentViewController.view removeFromSuperview];
        currentViewController = myServicesViewController;           
        break;
    case 2:
        if (historyViewController == nil) {
            self.historyViewController =
            [[History alloc] initWithNibName:nil bundle:nil];
        }
        [self.view insertSubview:historyViewController.view belowSubview:myTabBar];
        if (currentViewController != nil)
            [currentViewController.view removeFromSuperview];
        currentViewController = historyViewController;          
        break;
    case 3:
        if (recentRequestViewController == nil) {
            self.recentRequestViewController =
            [[RecentRequest alloc] initWithNibName:nil bundle:nil];
        }
        [self.view insertSubview:recentRequestViewController.view belowSubview:myTabBar];
        if (currentViewController != nil)
            [currentViewController.view removeFromSuperview];
        currentViewController = recentRequestViewController;            
        break;
    case 4:
        if (profileViewController == nil) {
            self.profileViewController =
            [[Profile alloc] initWithNibName:nil bundle:nil];
        }
        [self.view insertSubview:profileViewController.view belowSubview:myTabBar];
        if (currentViewController != nil)
            [currentViewController.view removeFromSuperview];
        currentViewController = profileViewController;          
        break;
    default:
        break;
   }
}


-(void)viewDidLoad

{

UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed: @"bg.jpg"]];
self.view.backgroundColor = background;
[myTabBar setSelectedItem:[myTabBar.items objectAtIndex:0]];
[self activateTab:1];
[super viewDidLoad];

}

Нажмите на любую вкладку, вид не меняется, может кто-нибудь сказать мне, где я иду не так ?? *

Ответы [ 4 ]

1 голос
/ 25 января 2012

Из-за [self activateTab:1];

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

я тоже не могуВыделите любой метод выбора панели вкладок для получения индекса панели выбора.

0 голосов
/ 25 января 2012

Следующий код используется для создания панели вкладок, и это представление также мы можем изменить представление динамически, используя код для следующего кода:

AppDelegate *delegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    UIViewController *viewController1 = [[viewcontroller1 alloc] initWithNibName:@"viewcontroller1" bundle:nil];
    UIViewController *viewController2 = [[viewcontroller2 alloc] initWithNibName:@"viewcontroller2" bundle:nil];
    UIViewController *viewController3 = [[viewcontroller3 alloc] initWithNibName:@"viewcontroller3" bundle:nil];


 UIViewController *viewController4 = [[viewcontroller3 alloc] initWithNibName:@"viewcontroller4" bundle:nil];


    UIViewController *viewController5 = [[Deliveryviewcontroller alloc] initWithNibName:@"viewcontroller5" bundle:nil];



            delegate.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, viewController3, viewController4, viewController5, nil];

            delegate.tabBarController.selectedIndex = 0;

            delegate.tabBarController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
            [self presentModalViewController:delegate.tabBarController animated:YES];

В делегировать maethod следующие действия

@property (strong, nonatomic) UITabBarController *tabBarController;

и синтезировать этот UITabbarController

@synthesize tabBarController = _tabBarController;
0 голосов
/ 25 января 2012

Пройдя через код снова и снова, я обнаружил, что пропустил одну строку кода, которая [self activateTab:item.tag];

в

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item method. 
{
    [self activateTab:item.tag];
}

Я отредактировал свой код, и он отлично работает.

0 голосов
/ 25 января 2012
...