UITabBar больше проблема с навигацией по кнопкам

В моем приложении у меня почти 10 элементов вкладок, которые в конечном итоге добавляют дополнительную кнопку на панель вкладок. Когда я нажимаю кнопку «Дополнительно», она отображает содержимое другой панели вкладок в виде списка. Я выбираю один из них и перемещаюсь внутри (у него есть навигационный контроллер) и нажимаю на элемент. Опять же, если я нажму кнопку «Дополнительно», загрузится предыдущая страница, и для загрузки дополнительных элементов вкладки мне придется щелкнуть несколько раз, так как это вызовет контроллеры пользовательского интерфейса. Следовательно, мне нужно загружать список панели вкладок каждый раз, когда пользователь нажимает на другой элемент. Пожалуйста, помогите мне понять, как это сделать.

Спасибо


person Dilshan    schedule 22.06.2011    source источник
comment
попробуйте использовать эту бесконечную панель вкладок github.com/iosdeveloper/InfiniTabBar   -  person Felix    schedule 23.06.2011
comment
Apple не любит такие вещи — пара спикеров WWDC специально выделила причудливые таббары.   -  person Paul Ardeleanu    schedule 23.06.2011


Ответы (3)


Возможно, вам стоит подумать о реструктуризации вашего приложения. Вам действительно нужно 10 параллелей области информации/функциональности?!

person Paul Ardeleanu    schedule 22.06.2011
comment
Да :( Однако приложение с более чем 6 элементами столкнется с этой проблемой. - person Dilshan; 23.06.2011

Вы можете сделать это с помощью метода ViewWillDisappear контроллера представления на вкладке «Дополнительно» и вызвать метод, чтобы вывести это представление из MoreViewNavigationController, например:

[супер viewWillDisappear: анимированный];

[self.navigationController popViewControllerAnimated: НЕТ];

это ответ

person m e    schedule 15.11.2012

Если вам нужно много кнопок, то на панели кнопок есть пункт и они в нее не влезают.

//  MasterViewController.h
        .
        .
        .

        - (IBAction)btMy:(id)sender;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *btMy;


        @property (weak, nonatomic) IBOutlet UIBarButtonItem *bt1;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *bt2;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *bt3;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *bt4;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *bt5;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *bt6;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *bt7;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *bt8;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *fl1;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *fl2;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *fl3;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *fl4;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *fl5;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *fl6;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *fl7;
        @property (weak, nonatomic) IBOutlet UIBarButtonItem *fl8;
        @end

        //  MasterViewController.m
        .
        .
        .
    @interface MasterViewController ()
    { 
        BOOL tt;
    }
    .
    .
    .
       - (IBAction)btMy:(id)sender {
        [self nextToolBar];

    } 

        -(void) nextToolBar {
         if (tt ) {
                self.navigationController.toolbar.items = [NSArray arrayWithObjects:_bt1, _fl1, _bt2, _fl1, _bt3, _fl1, _bt4, _fl1, _btMy, nil];
                tt = NO;
            }else{
                self.navigationController.toolbar.items = [NSArray arrayWithObjects:  _bt5, _fl1, _bt6,_fl1,_bt7,_fl1, _bt8, _fl1, _btMy, nil];
                tt = YES;
                 }

            for ( NSInteger x = 0; x < 8; x++){ // если при перевороте цвет меняли на прозрачный, востанавливаем обратно

                [self.navigationController.toolbar.items[x] setTintColor:_btMy.tintColor];
            }

        }

        -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ // после смены орентации устройства
           [self nextToolBar]; // показываем кнопки 4+1 иначе отображается все кнопки 8+1 шт

        }

        -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration{ // до смены арентауции устройства
            NSArray *myArray = [NSArray arrayWithObjects:_bt1, _bt2, _bt3, _bt4, _bt5, _bt6, _bt7, _bt8, nil]; // перед переворотом экрана меняем цвет на прозрачный
            for ( NSInteger x = 0; x < 8; x++){

                [myArray[x] setTintColor:[UIColor clearColor]];  //  
                 }
            if (tt) {tt=NO;} else {tt=YES;}   // чтобы вернуться на тот же набор кнопок
        }
person Oleg    schedule 11.02.2016