Редактируемый UITableView с текстовым полем в каждой ячейке - PullRequest
5 голосов
/ 15 августа 2011

Я новичок в мире iOS и хочу знать, как создать UITableView с пользовательскими ячейками, которые выглядят и ведут себя так же, как и у вас, когда вы пытаетесь настроить соединение WiFi на своем устройстве.(Вы знаете UITableView с ячейками, содержащими UITextField s с синим шрифтом, где вы устанавливаете IP-адрес и все такое ...).

1 Ответ

9 голосов
/ 15 августа 2011

Чтобы создать собственный макет ячейки, нужно немного кодировать, поэтому я надеюсь, что это вас не пугает.

Первое, что нужно создать - новый подкласс UITableViewCell.Давайте назовем это InLineEditTableViewCell.Ваш интерфейс InLineEditTableViewCell.h может выглядеть примерно так:

#import <UIKit/UIKit.h>

@interface InLineEditTableViewCell : UITableViewCell

@property (nonatomic, retain) UILabel *titleLabel;
@property (nonatomic, retain) UITextField *propertyTextField;

@end

А ваш InLineEditTableViewCell.m может выглядеть так:

#import "InLineEditTableViewCell.h"

@implementation InLineEditTableViewCell

@synthesize titleLabel=_titleLabel;
@synthesize propertyTextField=_propertyTextField;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Here you layout your self.titleLabel and self.propertyTextField as you want them, like they are in the WiFi settings.
    }
    return self;
}

- (void)dealloc
{
    [_titleLabel release], _titleLabel = nil;
    [_propertyTextField release], _propertyTextField = nil;
    [super dealloc];
}

@end

Следующее, что вы настраиваете UITableViewкак обычно, по вашему мнению, контроллер.При этом необходимо реализовать метод протокола UITablesViewDataSource - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath.Прежде чем вставить свою реализацию для этого, не забудьте #import "InLineEditTableViewCell" в вашем контроллере представления.После этого реализация выглядит следующим образом:

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

    if (!cell) {
        cell = [[[InLineEditTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"your-static-cell-identifier"] autorelease];
    }

    // Setup your custom cell as your wish
    cell.titleLabel.text = @"Your title text";
}

Вот и все!Теперь у вас есть пользовательские ячейки в UITableView.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...