CHGAdapter
Основное решение: UITableView в каждом контроллере необходимо устанавливать dataSource и delegate. Также UITableViewCell отделяется от DataSource tableView.
Конкретные проявления:
Android (CHGAdapter)
iOS (CHGAdapter)
HarmonyOS (UltimateProvider)
Если у вас есть вопросы или вы хотите пообщаться, пожалуйста, присоединяйтесь к QQ группе: 494648687.
Установка с помощью CocoaPods
pod 'CHGAdapter', '~> 1.1.5'
Пример (UITableView)
Ниже приведен пример кода на Swift, но он не отличается от версии OC.
import UIKit
/// 展示TableView中只有cell的用法
class Base1ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
title = "歌曲"
tableView.cellDatas = [getSongs()!]
}
func getSongs() -> [Any]? {
var songs = [Any]()
for item in ["七里香", "青花瓷", "简单爱", "双截棍", "夜曲", "以父之名", "稻香", "可爱女人", "红尘客栈", "床边故事", "跨时代"] {
songs.append(SongsModel(name: item))
}
return songs
}
}
import UIKit
/// 展示TableView中存在headerFooterView和cell的用法
class Base2ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
title = "展示TableView中存在headerFooterView和cell的用法"
tableView.headerDatas = getHeaderModels()
tableView.cellDatas = [getSongs1(), getSongs2()]
tableView.footerDatas = getFooterModels()
}
///专辑1数据
func getSongs1() -> [Any] {
var songs = [Any]()
for item in ["半兽人", "半岛铁盒", "暗号", "龙拳", "火车叨位去", "分裂(离开)", "爷爷泡的茶", "回到过去", "米兰的小铁匠", "最后的战役"] {
songs.append(SongsModel(name: item))
}
return songs
}
///专辑2数据
func getSongs2() -> [Any] {
var songs = [Any]()
for item in ["爱在西元前", "爸我回来了", "简单爱", "忍者", "开不了口", "上海一九四三", "对不起", "威廉古堡", "双截棍", "安静"] {
songs.append(SongsModel(name: item))
}
return songs
}
///headerView数据
func getHeaderModels() -> [Any]? {
return [Album.init(name: "八度空间", createTime: "2002年7月18日"), Album.init(name: "范特西", createTime: "2001年9月20日")]
}
///footerView数据
func getFooterModels() -> [Any]? {
return [AlbumDesc.init(desc: "《八度空间》这张专辑的创作灵感来自周杰伦平时看的一些电影和音乐录影带。"), AlbumDesc.init(desc: "《范特西》的专辑名称来源是英文“Fantasy”的发音,意为范特西范特西(3张)“幻想” 。")]
}
}
import UIKit
class Base3ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
title = "基础3(cell点击处理)"
tableView.cellDatas = [getSongs()]
tableView.setTableViewDidSelectRowBlock { (tableView, indexPath, itemData) in
guard let model: SongsModel = itemData as? SongsModel else { return }
print("当前点击:\(model.name!)")
}
}
func getSongs() -> [Any] {
var songs = [Any]()
for item in ["七里香", "青花瓷", "简单爱", "双截棍", "夜曲", "以父之名", "稻香", "可爱女人", "红尘客栈", "床边故事", "跨时代"] {
songs.append(SongsModel(name: item))
}
return songs
}
}
import UIKit
class Base4ViewController:
``` **Пример использования UICollectionView и его полная аналогия с UICollectionView**
1. Отображение ячеек:
import UIKit
class Base1ViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
title = "Песни"
collectionView.cellDatas = [getSongs()!]
}
func getSongs() -> [Any]? {
var songs = [Any]()
for item in ["七里香", "青花瓷", "简单爱", "双截棍", "夜曲", "以父之名", "稻香", "可爱女人", "红尘客栈", "床边故事", "跨时代"] {
songs.append(SongsModel(name: item))
}
return songs
}
}
2. Отображение header и footer:
import UIKIt
/// Пример использования collectionView, где присутствуют headerFooterView и cell class Base2ViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
title = "Пример использования collectionView с headerFooterView и ячейками"
collectionView.headerDatas = getHeaderModels()
collectionView.cellDatas = [getSongs1(), getSongs2()]
collectionView.footerDatas = getFooterModels()
}
/// Данные альбома 1
func getSongs1() -> [Any] {
var songs = [Any]()
for item in ["Полузверь", "Полуостровный железный ящик", "Шифр", "Кулак дракона", "Поезд уходит", "Разделение (уйти)", "Чай, который заварил дедушка", "Возвращение в прошлое", "Маленький кузнец из Милана", "Последняя битва"] {
songs.append(SongsModel(name: item))
}
return songs
}
/// Данные альбома 2
func getSongs2() -> [Any] {
var songs = [Any]()
for item in ["Любовь до нашей эры", "Папа, я вернулся", "Простая любовь", "Ниндзя", "Не могу говорить", "Шанхай 1943", "Прости", "Замок Уильяма", "Двойной удар", "Тишина"] {
songs.append(SongsModel(name: item))
}
return songs
}
// Другие функции...
}
///headerView данные
func getHeaderModels() -> [Any]? {
return [Album.init(name: "Восемь градусов пространства", createTime: "2002-07-18"),
Album.init(name: "Фантекс", createTime: "2001-09-20")]
}
///footerView данные
func getFooterModels() -> [Any]? {
return [AlbumDesc.init(desc: "Вдохновение для создания альбома «Восемь градусов пространства» пришло из некоторых фильмов и музыкальных записей, которые смотрел Цзеюнь в свободное время."),
AlbumDesc.init(desc: "Название альбома «Фантекс» происходит от английского произношения слова «Fantasy», что означает «Фантазия».")]
}
**Перевод:**
// Данные headerView
func getHeaderModels() -> [Any]? {
return [Album.init(name: «Восемь градусов пространства», createTime: «2002–07–18»),
Album.init(name: «Фантекс», createTime: «2001–09–20»)]
}
//Данные footerView
func getFooterModels() -> [Any]? {
return [AlbumDesc.init(desc: «Вдохновение для создания альбома „Восемь градусов пространства“ пришло из некоторых фильмов и музыкальных записей, которые смотрел Цзеюнь в свободное время.»),
AlbumDesc.init(desc: «Название альбома „Фантекс“ происходит от английского произношения слова „Fantasy“, что означает „Фантазия“».)]
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )