Как отображается приложение iPhone Contact app View

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

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

Ответ 1

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

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

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

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

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

Ответ 3

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

Ответ 4

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

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

  • Загрузите F- Script по ссылке выше
  • Следуйте инструкциям в каталоге extras/F- Script Anywhere для присоединения к адресной книге
  • Выберите F- Script → Открыть браузер объектов в меню адресной книги.
  • Нажмите "Выбрать просмотр"
  • Выделите адресную книгу, которую хотите изучить, и щелкните по ней.
  • Перейдите к своему сердечному содержимому.

Ответ 5

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

  • Добавьте свойство, чтобы сохранить ссылку на кнопку Отмена.

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

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

    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)
        }
    }
    
  • Переопределите методы UITableViewDelegate tableView (_: editStyleForRowAtIndexPath:) и tableView (_: shouldIndentWhileEditingRowAtIndexPath:) для настройки стилей строк и отступов в режиме редактирования.

  • Внедрить метод cancelPressed для выхода из режима редактирования при нажатии Cancel.

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

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