У меня есть этот код, который устанавливает подзону в представление определенного ViewController на основе того, какой параметр выбран в виде таблицы. Вот код:Перезагрузка объекта Subview C
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self setMainView:[[[self controllerArray] objectAtIndex:[indexPath row]] view]];
[self setCurrentViewController:[indexPath row]];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Код, который первоначально добавляет подвид выглядит следующим образом:
[self setMainView:[[[self controllerArray] objectAtIndex:0] view]];
[[self view] addSubview:[self mainView]]
Проблема заключается в том, что код, который изменяет подвид не обновляет подвид поэтому зрения фактически никогда не грузы. Я могу перезагрузить представление, удалив его из подвью ([[self mainView] removeFromSuperview]
), но это заставляет его загружать обратно в центр. Подвью может перемещаться в зависимости от жестов пользователя, и я хотел бы сохранить его в одном месте. Есть ли способ перезагрузить subview или мне нужно отслеживать, где находится subview, а затем установить его после удаления и повторного добавления.
EDIT: Интересная заметка: Этот код работает отлично (вид остается на предыдущей координате):
[[self mainView] removeFromSuperview];
[self setMainView:[[[self controllerArray] objectAtIndex:[indexPath row]] view]];
[[self view] addSubview:[self mainView]];
[self setCurrentViewController:[indexPath row]];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
впервые вид переключен исключением. Я мог бы установить координаты один раз, но есть более быстрый способ, поэтому мне не нужно удалять и добавлять представление каждый раз, когда я хочу, чтобы он переключался.
Что вы подразумеваете под «перезагрузкой»? –
Вы должны реализовать метод layoutSubviews на представлении контроллера вида и вызвать '[self.view layoutIfNeeded]', чтобы перенастроить положение всех ваших подзонов. – Eimantas
@JustinMeiners Представление автоматически не обновляется до нового представления (оно все еще показывает старое представление после того, как я установил его на новый). Есть ли способ обновить его. – carloabelli