IOS Как закрепить UITextField в фиксированной позиции - PullRequest
0 голосов
/ 26 марта 2012

У меня есть UITableView, и я не хочу добавлять UITextField поверх таблицы, но я не хочу, чтобы он прокручивался при прокрутке табличного представления. Я хочу, чтобы поле uitext оставалось на вершине. Я посмотрел какой-то предыдущий ответ на этих форумах, но все они говорят о файле .xib, и я пытаюсь сделать это с помощью Xcode 4.3 и раскадровок. Если бы вы могли предоставить какой-то базовый код, он был бы признателен:)

1 Ответ

2 голосов
/ 26 марта 2012

Вы можете сделать это легко.Хитрость заключается в том, что вам нужно начать с использования UIViewController вместо UITableViewController.

Если вы используете раскадровки, начните с перетаскивания UIViewController на холст.Затем перетащите UITextField на контроллер представления и разместите его там, где вы хотите (т.е. вверху).Затем перетащите UITableView ( NOT UITableViewController) на ваш viewcontroller и установите рамку табличного представления так, чтобы он охватывал все представления контроллера представления, кроме той части представления, в верхней части которой находится текстовое поле (т.е.часть, которую вы не хотите прокручивать).Затем перетащите UITableViewCell из неба объектов на табличное представление.В инспекторе свойств установите для свойства «Идентификатор» ячейки табличного представления нечто уникальное («MyCell» или что-то в этом роде).

После того, как вы это сделаете, ваша сцена раскадровки должна выглядеть примерно так:

enter image description here

Далее вам нужно установить свойства делегата и источника данных вашего табличного представления.Не забудьте сделать это.Сделайте это, нажав Ctrl на табличном представлении и перетащив его из делегата и источника данных в контроллер представления.

Наконец, вам нужно реализовать источник данных таблицы и делегировать методы в вашем классе контроллера представления.В заголовочном файле контроллера представления (.h) объявите, что вы будете реализовывать UITableViewDelegate и UITableViewDataSource следующим образом:

@interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

, а затем реализуете необходимые методы в файле .m реализации контроллера представления.Как минимум вам нужно будет реализовать tableView:numberOfRowsInSection: и cellForRowAtIndexPath:, а возможно tableView:didSelectRowAtIndexPath: и, возможно, другие.

@implementation MyViewController

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // return number of rows
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];

    // set value(s) in your table cell here

    return cell;
}
...