#iphone
#iPhone
Вопрос:
У меня есть UITableView, который прокручивается в соответствии с ожидаемым. Я хочу, чтобы таблица занимала 80% пространства, и я хочу, чтобы другой объект находился вверху. В этом нет ничего особенного. Моя проблема в том, что я не хочу, чтобы объект вверху прокручивался, когда это делает таблица. Мы были бы весьма признательны за любую помощь / примеры того, как это можно сделать. Это довольно часто видно в строке поиска. Спасибо.
Хорошо, я понял концепцию, но теперь мне не хватает исполнения. Как я могу добавить код в мой rootViewControler? Я попробовал следующее, и я вижу два «заголовка», но они все еще прокручиваются. Я добавил их в свой viewDidLoad в моем RootViewController
UIView *containerViewA =
[[[UIView alloc]
initWithFrame:CGRectMake(0, 0, 300, 60)]
autorelease];
UIView *containerViewB =
[[[UIView alloc]
initWithFrame:CGRectMake(10, 60, 300, 60)]
autorelease];
UILabel *headerLabelA =
[[[UILabel alloc]
initWithFrame:CGRectMake(10, 20, 300, 40)]
autorelease];
UILabel *headerLabelB =
[[[UILabel alloc]
initWithFrame:CGRectMake(10, 80, 300, 40)]
autorelease];
headerLabelA.textColor = [UIColor whiteColor];
headerLabelA.shadowColor = [UIColor blackColor];
headerLabelA.shadowOffset = CGSizeMake(0, 1);
headerLabelA.font = [UIFont boldSystemFontOfSize:22];
headerLabelA.backgroundColor = [UIColor clearColor];
headerLabelA.text = NSLocalizedString(@"A", @"");
headerLabelB.textColor = [UIColor whiteColor];
headerLabelB.shadowColor = [UIColor blackColor];
headerLabelB.shadowOffset = CGSizeMake(0, 1);
headerLabelB.font = [UIFont boldSystemFontOfSize:22];
headerLabelB.backgroundColor = [UIColor clearColor];
headerLabelB.text = NSLocalizedString(@"B", @"");
[containerViewB addSubview:headerLabelA];
[containerViewA addSubview:containerViewB];
[self.view addSubview:containerViewA];
Ответ №1:
Вам нужно упорядочить иерархию представлений таким образом, чтобы другой объект не находился в прокручиваемом представлении. Итак, это должно выглядеть следующим образом.
UIView
|
|-- UIView - this one won't scroll
|
|-- UIScrollView
|
|--UITableView
Комментарии:
1. Гэри, я вижу, что это работает в IB, но при сборке я не вижу элементов во втором UIView. Приношу свои извинения за вопрос newb.
2. Немного сложно понять, что не так, если я не вижу ваш проект IB или код, извините.
Ответ №2:
Ответ Гэри уже хорош. Я просто хочу уточнить это.
У вас есть UIViewController A (который не должен быть UITableViewController или UIScrollViewController).
Тогда у вас есть UITableView B и UIView C.
Вы можете сделать это следующим образом: [A.view addSubview:C]
и затем [A.view addSubiew:B]
. Не забудьте инициализировать представление с правильным фреймом
Комментарии:
1. Водханг, я немного сбит с толку. Ваш ответ отличается от ответа Гэри. Можете ли вы уточнить? Спасибо за ваше время.
2. Это аналогичное, но другое объяснение, и я использую код для его выполнения. У вас все еще есть та же иерархия, что и на главном экране просмотра — UIView, затем вы добавляете другой вид A в качестве подвида основного вида в верхней части основного вида. Затем вы добавляете другой UITableView (или UIScrollView) под видом A.