У меня есть пользовательская библиотека (devinross/tapkulibrary), которая реализует сегментированные элементы управления. Этот сегментированный элемент управления помещается в подпункт основного вида. Теперь, когда я меняю элемент управления на сегментированные элементы управления, я перехожу к новому диспетчеру просмотра и перерисовываю сегментированные элементы управления в том же месте. Но это вызывает некоторые проблемы во время анимации в некоторых случаях.iOS: Сохранение вида постоянное или передача представления между различными ViewControllers
Возможно ли, что я могу присвоить сегментированное свойство управления нового контроллера представления текущему свойству и тем самым использовать один и тот же сегментированный элемент с различными контроллерами.
// First.h
@property (weak, nonatomic) IBOutlet UIView *segmentedView;
@property (nonatomic, strong) TKMultiSwitch *multiswitch;
// First.m
- (void)viewDidLoad {
//multiSwitch initializations
[self.multiswitch addTarget:self action:@selector(changedSegmentedControl:) forControlEvents:UIControlEventValueChanged];
[self.segmentedView addSubview:self.multiswitch];
}
-(void) changedSegmentedControl:(id)sender {
switch(sender.indexOfSelectedItem)
{
case 1:
Second *controller = (Second*)[self.storyboard instantiateViewControllerWithIdentifier:@"secondvc"];
controller.multiswitch = self.multiswitch;
break;
}
}
// Second.h
@property (weak, nonatomic) IBOutlet UIView *segmentedView;
@property (nonatomic, strong) TKMultiSwitch *multiswitch;
// Second.m
- (void)viewDidLoad {
[self.multiswitch addTarget:self action:@selector(changedSegmentedControl:) forControlEvents:UIControlEventValueChanged];
[self.segmentedView addSubview:self.multiswitch];
}
-(void) changedSegmentedControl:(id)sender {
switch(sender.indexOfSelectedItem)
{
case 0:
First *controller = (First*)[self.storyboard instantiateViewControllerWithIdentifier:@"firstvc"];
controller.multiswitch = self.multiswitch;
break;
}
}
Для case 1:
в switch
разделе First.m файла, я также попытался следующие, но не повезло:
[controller.segmentedView addSubView:self.multiSwitch];
отметить также, что я не могу использовать подвидов и показать их, когда элементы управления Географическая изменены. Мне нужно изменить контроллеры представлений.
EDIT: Видео показывая, что работает, а что нет (здесь 3 секции есть)
рабочий: https://www.youtube.com/watch?v=lI368z9ntfM
проблема: https://www.youtube.com/watch?v=oTU6tIq5ZW4
Какие проблемы с анимацией вы видите? – mbm29414
Поскольку я ранее сохранял отдельные сегментированные элементы управления, я вручную выбирал индекс в viewDidLoad of Second.h, когда пользователь касается определенного сегментированного элемента управления. Но когда пользователь перетаскивает (или проверяет) по сегментированному управлению, он отображает анимацию дважды, поскольку есть такое же событие прослушивания UIControlEventValueChanged. – meteors
Итак, у вас есть 2 объекта 'UISegmentedControl', но только 1 прослушиватель? Не могли бы вы сделать, чтобы каждый сегментированный элемент управления имел свой собственный слушатель (т. Е. Контроллер отображения, который отображает его)? – mbm29414