У меня есть контроллер вида, который имеет UITableView
, который закрывает нижнюю половину контроллера. У меня есть кнопка в заголовке верхнего раздела, которая позволяет пользователю минимизировать или максимизировать UITableView
. Когда кнопка нажата, y-компонент позиции UITableView
изменяется так, что UITableView
, по-видимому, сводится к минимуму в нижней части экрана. Когда кнопка нажата, когда UITableView
находится в сводном состоянии, позиция y UIableView
возвращается в исходное значение. Как максимизация, так и минимизация UITableView
анимированы для обеспечения плавного перехода между открытым и закрытым состояниями UITableView
.iOS - Сброс позиции UITableView при представлении контроллера
Все это работает очень хорошо и обеспечивает пользовательский интерфейс, который позволяет пользователю использовать информацию, отображаемую в виде таблицы, и информацию, отображаемую в контроллере представления позади него. Проблема возникает, когда второй контроллер отображается сверху. По какой-то причине, когда пользователь отклоняет второй контроллер, представление таблицы всегда возвращается в исходное положение независимо от положения, в котором он находился, в момент представления второго контроллера. Это создает множество проблем, поскольку контроллер начального представления все еще считает, что представление таблицы находится в позиции, которая была на момент презентации. Почему это? Почему позиции компонентов сбрасываются, когда контроллер представления отображается сверху, а затем отклоняется?
Вот как я определил мой UITableView
как свойство:
@property (nonatomic, strong) IBOutlet UITableView *reviewTable;
Вот как я минимизировать/максимизировать мой вид таблицы:
- (IBAction)btnExpandCompress:(id)sender
{
UIImage *downImage = [UIImage imageNamed:@"arrowDown.png"];
UIImage *upImage = [UIImage imageNamed:@"arrowUp.png"];
UIButton *btnExpandCompress = (UIButton *)sender;
[btnExpandCompress setEnabled:NO];
//global flag to tell if the table view is maximized or minimized
if (showingReviews)
{
[UIView animateWithDuration:0.7 animations:^{
CGRect frame = reviewTable.frame;
frame.origin.y += reviewTable.frame.size.height - 30;
reviewTable.frame = frame;
} completion:^(BOOL finished) {
showingReviews = NO;
[btnExpandCompress setEnabled:YES];
[btnExpandCompress setBackgroundImage:upImage forState:UIControlStateNormal];
}];
}
else
{
[UIView animateWithDuration:0.7 animations:^{
CGRect frame = reviewTable.frame;
frame.origin.y -= reviewTable.frame.size.height - 30;
reviewTable.frame = frame;
} completion:^(BOOL finished) {
showingReviews = YES;
[btnExpandCompress setEnabled:YES];
[btnExpandCompress setBackgroundImage:downImage forState:UIControlStateNormal];
}];
}
}
Если есть какая-либо другая информация, необходимая для ответа на этом вопрос пожалуйста, дайте мне знать.
каждый думает отлично работает с вышеуказанным кодом, я думаю, что u переопределяет 'viewDidAppear' или' viewWillAppear' в veiewcontroller содержит tableview ..? –
Я не переопределял ни один из этих методов. Есть ли что-нибудь еще, что может быть[email protected] – ScottOBot
Я устал от вашей ситуации, он отлично работает, слышит, что перемещение табличного представления в исходное положение не происходит даже после увольнения второго контроллера, я думаю, что вы устанавливаете где-то в исходное положение –