Нативная разработка мобильных приложений



Download 3,69 Mb.
Pdf ko'rish
bet215/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   211   212   213   214   215   216   217   218   ...   228
Bog'liq
Нативная разработка мобильных приложений

File 

 New 

 File
(Файл 

Создать 

Файл). 
Чтобы переключить контроллер табличного представления на использование 
этого класса, выберите сцену 
Locations
и в инспекторе идентичности введите 
в поле 
Custom Class
значение LocationsTableViewController.
Управление поиском
В iOS есть удобный класс 
UISearchController
, упрощающий разработку пользо
-
вательского интерфейса поиска. Однако этот класс нельзя использовать в ре
-
дакторе раскадровки или в Interface Builder, поэтому нам придется создать его 
вручную.
Откройте файл 
LocationsTableViewController.swift
. Сначала удалим весь шаб-
лонный код, который Xcode добавляет автоматически, когда мы наследуем 
класс 
UITableViewController
. В результате должен получиться такой контроллер 
представления:
import UIKit
class LocationsTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
// Источник данных для табличного представления
override func numberOfSections(in tableView: UITableView) ­>
Int {
// #warning Неполная реализация, должна вернуть число разделов
return 0
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section:
Int) ­> Int {
// #warning Неполная реализация, должна вернуть число записей
return 0
}
}
Теперь мы должны создать и сохранить контроллер поиска для последующе
-
го использования в начальном контроллере представления 
LocationsTableView­
Controller
. Как рассказывалось в обсуждении жизненного цикла контроллера 
представления в главе 2, это делается путем переопределения метода 
viewDid­
Load
контроллера представления. Наш контроллер наследует класс 
UITableView­
Controller
, который, в свою очередь, наследует 
UIViewController
, а значит, он об
-
ладает тем же набором методов.


Поиск в сети 

349
Добавьте следующий код в тело метода 
viewDidLoad
:
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.delegate = self
searchController.searchBar.placeholder = "Search Locations by Country"
searchController.obscuresBackgroundDuringPresentation = false
definesPresentationContext = true
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
}
Этот код создает новый объект 
UISearchController
и сохраняет его в перемен
-
ной 
searchController
. Затем мы устанавливаем свойство 
delegate
строки поиска 
так, чтобы она вызывала контроллер каждый раз, когда пользователь пытается 
выполнить поиск. Продолжим придерживаться этого протокола и пока про
-
игнорируем ошибку компилятора. Далее мы задаем текст-заполнитель для 
панели поиска. В данном случае это просто строка Search Locations by Country 
(Поиск местоположений по странам), но это может быть любой другой текст, 
который вы решите отобразить, чтобы подсказать пользователям, что они мо
-
гут искать.
Следующие две строки необходимы для отображения результатов поиска. 
В iOS для поддержки поиска используется 
UISearchController
. Он имеет не
-
сколько свойств, которые нужно настроить, чтобы сделать поиск максимально 
удобным. Первое свойство, 
obscuresBackgroundDuringPresentation
, предотвращает 
перекрытие контроллера поиска текущим контроллером представления, ко
-
торый используется для отображения результатов. Это важно, потому что при 
инициализации контроллера поиска мы не предоставляем новый контроллер 
searchResultsViewController
непосредственно, поэтому результаты будут ото
-
бражаться в этом же контроллере представления. Если этот контроллер пред
-
ставления окажется перекрыт представлением с результатами, пользователь 
не сможет воспользоваться им повторно, а это очень неудобно.
В связи с этим мы также должны присвоить свойству 
definePresentationCon­
text
значение 
true
, чтобы когда 
UISearchController
будет отображать представ
-
ление с результатами, контроллер представления, в котором мы находимся, 
предоставлял контекст для отображения результатов и панели поиска. По сути, 
это означает, что этот контроллер представления будет скрывать панель поис
-
ка после перехода к другому представлению.
Наконец, мы записываем ссылку на только что созданный контроллер поис
-
ка в свойство 
searchController
элемента навигации 
navigationItem
. Это позволяет 
родительскому контроллеру навигации, который управляет этим представле
-
нием, отобразить панель поиска в панели навигации. Мы также устанавливаем 
свойство 
hidesSearchBarWhenScrolling
, потребовав постоянно отображать панель 
поиска.
Теперь нам нужно заставить наш контроллер представления придерживать
-
ся протокола 
UISearchBarDelegate
. Этот протокол необходим для обновления 
табличного представления, отображающего результаты поиска. При каждом 



Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   211   212   213   214   215   216   217   218   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish