Как реализовано приложение iPhone Contact? Посмотреть - PullRequest
11 голосов
/ 07 октября 2009

Я хотел бы реализовать представление, аналогичное подробному представлению собственного приложения контактов Apple, в котором оно отображает имя, номер телефона, заметку и т. Д. И режим редактирования.

Можете ли вы проанализировать, как это делается? Это представление сделано с UITableView или UIScrollView?

Ответы [ 5 ]

11 голосов
/ 05 марта 2010

Экран контактной информации на самом деле очень просто имитировать.

Начните с UITableView и предоставьте ему UITableViewDataSource и UITableViewDelegate. Вам нужно будет предоставить разделы для всех данных, которые вы хотите представить. Это означает 1 для настраиваемого верхнего колонтитула, 1 для настраиваемого нижнего колонтитула (кнопки / действия) и приблизительно 6 или около того разделов для данных (один раздел для телефонных номеров, другой для адресов электронной почты и т. Д.)

Внутри каждого раздела необходимо указать количество строк из источника данных, чтобы указать объем данных для этого раздела. Для каждой строки можно использовать UITableViewCell для отображения фактических данных контакта (метка факса / значение номера факса и т. Д.). Вы можете получить фантазию, если хотите, но в этом нет необходимости. Для таких вещей, как рингтон, вам нужно указать индикатор раскрытия.

Для заголовка вам понадобится UIImageView и UILabel, для нижнего колонтитула вам понадобится несколько кнопок UIB. Вы можете создать дочерний элемент UITableViewCell в InterfaceBuilder с этими представлениями внутри и подключить его, как и все остальное. Вы можете использовать NSBundle для загрузки представлений из других xib-файлов, которые еще не загружены.

Альтернативой является динамическая генерация виджетов пользовательского интерфейса во время выполнения без XIBS. Все зависит от того, что вы бы предпочли (код или XIBS), мне кажется, что в любом случае это примерно одинаковое количество усилий. Я настоятельно рекомендую прочитать руководство по программированию табличного представления 1010 *, если вы этого еще не сделали.

3 голосов
/ 01 апреля 2011

Или вы можете использовать собственный ABPersonViewController от Apple:

http://developer.apple.com/library/ios/#documentation/AddressBookUI/Reference/ABPersonViewController_Class/Reference/Reference.html

Свойство allowEditing указывает, может ли пользователь редактировать информацию о человеке.

1 голос
/ 05 марта 2010

Моя реализация использует UITableView с настраиваемым заголовком (для «Добавить фото» и редактировать эквиваленты имен) и настраиваемым нижним колонтитулом (с помощью хака UISegmentedControl для большой кнопки) для эквивалента «Удалить».

0 голосов
/ 27 декабря 2014

Просто, чтобы показать вам путь, вы можете создать для этого подкласс UITableViewController, а затем, чтобы реализовать режим редактирования, аналогичный приложению «Контакты», вы должны:

  1. Добавить свойство для хранения ссылки на кнопку Отмена.

    var cancelButton: UIBarButtonItem!
    
  2. В ViewDidLoad () добавьте кнопку редактирования на панель навигации в качестве правого элемента и подготовьте кнопку Отмена, чтобы позже добавить ее в качестве левого элемента.

    self.navigationItem.rightBarButtonItem = self.editButtonItem()
    self.cancelButton = UIBarButtonItem(title: "Cancel", style: .Plain, target: self, action: "cancelPressed:")
    
  3. Переопределить метод setEditing (_: animated :), чтобы настроить ячейки для режима редактирования / предварительного просмотра и показать / скрыть кнопку «Отмена» на панели навигации на основе флага редактирования.

    override func setEditing(editing: Bool, animated: Bool) {
        super.setEditing(editing, animated: true)
    
        if editing {
            // Set up cells and prepare for Edit mode here
            self.navigationItem.setLeftBarButtonItem(self.cancelButton, animated: true)
        } else {
            // Set up cells and prepare for Preview mode here
            self.navigationItem.setLeftBarButtonItem(nil, animated: true)
        }
    }
    
  4. Переопределить методы tableView UITableViewDelegate (_: editStyleForRowAtIndexPath :) и tableView (_: shouldIndentWhileEditingRowAtIndexPath :) для настройки стилей строк и отступов в режиме редактирования.

  5. Реализация метода cancelPressed для выхода из режима редактирования при нажатии кнопки Отмена.

    func cancelPressed(button: UIBarButtonItem) {
        self.setEditing(false, animated: true)
    }
    

Я знаю, что вопрос довольно старый, но кто-то может найти его полезным.

0 голосов
/ 07 октября 2009

Вы можете использовать F-Script для изучения этого. Вот скриншот из браузера F-Script при просмотре адресной книги. По сути, это выглядит как множество пользовательских представлений, которые все наследуются от NSView.

Чтобы сделать это самостоятельно:

  1. Скачать F-Script по ссылке выше
  2. Следуйте инструкциям в каталоге extras / F-Script Anywhere для подключения к адресной книге
  3. Выберите F-Script -> Открыть обозреватель объектов в меню адресной книги
  4. Нажмите Выбрать вид
  5. Выделите представление адресной книги, которое вы хотите изучить, и щелкните по нему.
  6. Навигация по душе.
...