Проблема с рамкой табличного представления при просмотре прокрутки
Я хотел опубликовать GIF, но, видимо, мне не хватает репутации. Ну да ладно, что угодно; Я использовал UIPageViewController, но по какой-то причине я решил пойти с более ручным решением, используя UIScrollView и добавив представления UITableViewControlllers к соответствующим смещениям (страницам). У меня есть 4 UItableViewControllers на каждой странице (представления контроллеров табличного представления), и все они добавляются в контроллер представления контейнера (который имеет UIScrollView) в качестве дочерних контроллеров представления.
Фактическая проблема заключается в том, что когда я переключился, представления таблиц начали отказываться идти до конца, и часть окончательной ячейки представления таблиц остается обрезанной к концу экрана, когда прокрутка заканчивается.
Итак, хотел спросить, сталкивался ли кто-нибудь с чем-то подобным до того, как узнать, как от этого избавиться. Я знаю, что всегда могу использовать библиотеку, но я хочу учиться. Вот некоторый код:
_containerScrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
_containerScrollView.contentSize = CGSizeMake(_containerScrollView.frame.size.width * 4, 0.0f);
_containerScrollView.pagingEnabled = YES;
[self.view addSubview:_containerScrollView];
UITableViewController *vc1 = [[UIViewController alloc] init];
UITableViewController *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"trendingViewController"];
UITableViewController *vc3 = [self.storyboard instantiateViewControllerWithIdentifier:@"placesViewController"];
UITableViewController *vc4 = [self.storyboard instantiateViewControllerWithIdentifier:@"favoritesViewController"];
self.rallyViewControllers = [NSArray vc1, vc2, vc3, vc4, nil];
[self addViewControllers];
Другие методы;
- (void)addViewControllers{
if (self.rallyViewControllers == nil) {
return;
}
for (int i = 0; i < [self.rallyViewControllers count]; i++) {
UIViewController* viewController = [self.rallyViewControllers objectAtIndex:i];
[self addChildViewController:viewController];
[viewController didMoveToParentViewController:self];
[_containerScrollView addSubview:viewController.view];
}
}
Это называется в viewDidLayoutSubviews
- (void)configureFrames{
if (self.rallyViewControllers == nil) {
return;
}
CGFloat width = _containerScrollView.frame.size.width;
CGFloat height = _containerScrollView.frame.size.height;
for (int i = 0; i < [self.rallyViewControllers count]; i++) {
UIViewController *viewController = [self.rallyViewControllers objectAtIndex:i];
viewController.view.frame = CGRectMake(i * width, 0.0f, width, height);
}
}
2 ответа
Я понял. Проблема заключалась в том, что когда я добавил представления контроллеров представления в представление прокрутки, они возвращали размеры, как если бы не было навигационной панели. Но они все еще были расположены под панелью навигации, что привело к тому, что общий вид имел на 64 пункта больше высоты, чем мог показывать экран. когда я вручную вычел 64 pt из просмотров, и это было исправлено. Но так как это очень грубый способ сделать это, я попытался исправить это, возившись с автоматическим макетом, что в итоге получилось хорошо.
Я должен заявить заранее, что я не совсем понял ваше описание
msgstr "табличные представления начали отказываться идти полностью вниз, и часть окончательной ячейки табличного представления остается урезанной к концу экрана, когда прокрутка заканчивается".
Мой ответ основан на проблеме, с которой я столкнулся раньше. Моя установка - это удобный вид в представлении контейнера раскадровки (без родительского просмотра прокрутки)
Я столкнулся с этой проблемой, когда часть табличного представления была обрезана, и я не мог видеть около 5 нижних рядов.
Оказывается, у меня не было никаких ограничений между родительским контейнерным представлением и табличным представлением.
Чтобы определить, хорошо ли рендерится ваши таблицы, запустите ваш проект в XCode и затем нажмите на кнопку ниже
Эта кнопка затем приостановит ваше приложение и предоставит вам визуальный набор различных представлений, которые в данный момент отображаются в вашем приложении. Затем вы можете увидеть, отображается ли какой-либо из дочерних элементов (в вашем случае таблиц) вне рамок родительского представления, и в этом случае эта часть не будет видна. Это указывает на то, что у вас нет ограничений (или) текущие ограничения у вас неверны.