Объект iPhone не должен прокручиваться

#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.