2009-10-06 1 views
11

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

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

ответ

11

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

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

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

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

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

0

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

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

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

Будет ли F-Script работать для приложений iPhone? – Boon

+0

Hrm. Несмотря на то, что версия iPhone Simulator для MobileAddressBook является динамическим исполняемым файлом, загрузка пакета FScript в gdb не работает. – nall

1

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

3

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

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

0

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

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

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

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

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

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

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

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

Смежные вопросы