@SVM12

Как программно изменить ширину UITableView?

Здраствуйте.

Вообщем есть UIViewController, в который я разместил UITableView во весь экран(main UIView). iPad. Использую сториборд.
Есть задача: при выделении записи в UITableView размер и позиция UItableView должны меняться(ширина уменьшаться, а сама вьюшка сдвигаться в право). А слева должна отобразиться вьюшка(или без нее) с деталями выделенной записи.

a54aede09f7e46d3b6da34e9372edece.jpg

Я попытался сделать это следующим способом:

Код контроллера:
- (void)viewDidLoad {
    [super viewDidLoad];
    bigFrame = self.tableView.frame;
    CGFloat xOffset = 256;
    smallFrame = CGRectMake(bigFrame.origin.x + xOffset, bigFrame.origin.y, bigFrame.size.width - xOffset, bigFrame.size.height);
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    tableView.frame = smallFrame;
}


Проблема в том, что в таком случае работает только со второй попытки выделения.

Прошу разъяснить как правильно делать подобное поведение в интерфейсе. SplitViewController не используется.
  • Вопрос задан
  • 2435 просмотров
Решения вопроса 1
@ifau
Можно вынести у tableView Leading Space to Superview в Outlet, и изменять его
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.leftSpace.constant = 256;
    [UIView animateWithDuration:animationDuration animations:^
    {
        [self.view layoutIfNeeded];
    }];
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.leftSpace.constant = 0;
    [UIView animateWithDuration:animationDuration animations:^
    {
        [self.view layoutIfNeeded];
    }];
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SVM12 Автор вопроса
ifau, Спасибо. Помогло.

Также я выяснил, что если tableView создать программно через initWithFrame, то выше описанной проблемы не возникает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
02 нояб. 2024, в 21:08
2000000 руб./за проект
02 нояб. 2024, в 20:34
40000 руб./за проект