Как создать UITableViewCell как ячейку с контактным адресом iphone? - PullRequest
2 голосов
/ 31 октября 2011

Мне нужна помощь, чтобы выяснить, как создать ячейку, подобную ячейке, представляющей Адрес, в приложении iphone Contacts.Я не хочу создавать адрес.Мне просто нужно знать, как показать следующее в режиме редактирования:

  1. Текст слева (например, UITableViewCellStyleValue2)
  2. Серая линия, разделяющая левую и правую
  3. Содержимое справа в произвольном формате - у меня будут разные форматы в зависимости от того, что я пытаюсь представить здесь, с разной высотой.

Любой пример кода, примеры Apple (хотя яне могу найти один), учебные пособия или общие указания очень ценится.Я пытаюсь избежать создания пользовательского класса контейнера для обработки всего слева и динамического изменения размера в зависимости от содержимого, которое я хочу разместить справа.Конечно, кто-то уже сделал это, верно?:)

Режим редактирования выглядит следующим образом: Contacts Address Edit

Ответы [ 2 ]

4 голосов
/ 31 октября 2011

Вы должны создать свой собственный класс UITableVIewCellSubclass, это не так сложно, как вы думаете.

В основном вам просто нужно добавить 2 UITextField и UIImageView между ними для разделителя.

Я советую вам взглянуть на руководство Apple по программированию TableView, и особенно Подробный взгляд на ячейки Table-View

У вас есть пример кода, очень похожий на то, что вы пытаетесь достичь. Вот идея (непроверенный код):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"ImageOnRightCell";

    UITextField*main, *second;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

        main = [[[UITextField alloc] initWithFrame:CGRectMake(0.0, 0.0, 220.0, 15.0)] autorelease];
        main.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
        [cell.contentView addSubview:main];

        second = [[[UITextField alloc] initWithFrame:CGRectMake(220.0, 0.0, 220.0, 15.0)] autorelease];
        second.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
        [cell.contentView addSubview:second];

    }

    return cell;
}

Надеюсь, это поможет, Винсент

1 голос
/ 31 октября 2011

Я только что сделал что-то подобное. Мое решение было достаточно специфичным для моих данных, но в целом я так и сделал:

  1. Текст слева расположен вертикально по центру UILabel
  2. Правая сторона - это UITableView
  3. «123 Fake Street» будет входить в подкласс UITableViewCell, в который UITextField добавляется в представление содержимого.
  4. «Мой город» и «ST» будут входить в один подкласс UITableViewCell, который должен быть добавлен в UITextField. Я фактически сделал UITextFieldSubclass, который дает мне контроль над тем, какие границы рисовать (т.е. drawLeftBorder = YES).
  5. Вы должны решить, когда изменить размер, но вы в основном добавляете строку в правой части, а затем вызываете блок begin / endUpdates в родительском табличном представлении. Убедитесь, что родительский просмотр таблицы реализует heightForRowAtIndexPath и возвращает правильное значение на основе данных.
...