0

Мне было интересно, можете ли вы мне помочь. Я разрабатываю приложение, в котором у меня есть пять контроллеров UIView, каждый из которых заполняется и заполняется полями. В нижней части страницы я создал нижнюю панель с пятью кнопками, по одному для каждого контроллера.Перемещение между контрольными объектами Objective-C

Я хочу, чтобы следующее: Если пользователь заполнил половину, давайте скажем VC_1, а затем перейдём к VC_2, заполните здесь несколько полей, а затем вернемся к VC_1 или новому VC3, что прогресс до все еще там.

Я пробовал это с помощью «presentViewController» на каждой кнопке, однако, что произойдет, если я вернусь к 1, это то, что все поля пустые, вероятно, потому, что он бросает viewController поверх текущего. Один из способов, которым данные не удаляются, - это использовать функцию rejectViewController, но это всегда возвращает меня в VC_1 и не будет работать, если я захочу вернуться с VC_3 на VC2.

Надеюсь, мои вопросы будут иметь смысл и что один из вас может объяснить, как я могу достичь вышеуказанной цели.

Cheers, Lennaert

+0

Вы посмотрели на [UITabBarController] (https://developer.apple.com/library/ios/documentation/uikit/reference/UITabBarController_Class/Reference/Reference.html)? –

ответ

1

Похоже UITabBarController является вашим другом. Он управляет отображением и скрытием просмотров для вас.

2

Вот две идеи, которые могут помочь

  1. Создание и использование модели, которые сохраняются дольше, чем любой контроллер представления.
  2. Похоже, вы должны использовать UITabBarController.

Для идеи 1, когда вы храните данные, создайте класс отдельно от любого контроллера представления для хранения данных. Когда вы создаете экземпляр вашего контроллера представлений, назначьте этот объект данных контроллеру представления. Затем, когда загружается представление, используйте данные в объекте данных для заполнения полей. Когда пользователь вносит изменения с любым из элементов управления, обновите объект данных. См. Model-View-Controller.

Для идеи 2 с помощью контроллера панели вкладок будут храниться активные экземпляры всего вашего контроллера вида. Таким образом вам не нужно создавать новые экземпляры.

+0

На самом деле вы должны сделать * оба * из этих вещей! –

0

Вместо UITabBarController Я думаю, что ваш лучший выбор - UIScrollView с большими contentSize и pagingEnabled = YES. Все в одном viewController и вы можете настроить нижнюю панель, как вам нравится.

0

Хм пару вещей, чтобы рассмотреть. Как комментируют Пер Аллена, вы можете рассмотреть возможность включения проекта в UITabBarController:

Вот как это сделать программно:

@property (nonatomic, strong) UITabBarController *tabBarController; 
    MyView * view = [[MyView alloc]initWithNibName:@"MyView" bundle:nil]; 

      view.title = @"My Planner"; 


      nav1 = [[UINavigationController alloc] initWithRootViewController:view]; 

       nav1.tabBarItem.image = [UIImage imageNamed:@"nofill_star.png"]; 

    self.tabBarController.viewControllers=[NSArray arrayWithObjects:nav1,nil]; 


OR 

    MyView * view = [[MyView alloc]initWithNibName:@"MyView" bundle:nil]; 

      view.title = @"My Planner"; 

self.tabBarController.viewControllers=[NSArray arrayWithObjects:view,nil]; 

Или от вашой раскадровки, перейдите в редактор вставлять в панели вкладок. Также проверьте NSUserDefualts. Это тоже нужно учитывать.

Смежные вопросы