Sobes.tech
Junior — Middle

Афзалиятҳои асосии истифодаи UITableView ва UICollectionView дар муқоиса бо UIScrollView чист?

sobes.tech AI

Ҷавоб аз AI

UITableView ва UICollectionView пешниҳод мекунанд қулай ва оптимизатсияшуда механизмҳо барои намоиши рӯйхатҳо ва маҷмӯаҳои маълумот, баръакс аз UIScrollView, ки танҳо кафолат медиҳад, ки мазмун дар ҳудуди муайян ҳаракат мекунад.

Фоидаҳои асосӣ:

  • Истифодаи такрорӣ аз ҳуҷраҳо: UITableView ва UICollectionView механизми истифодаи такрории ҳуҷраҳоро (reuseIdentifier) истифода мебаранд, ки ин назаррас кам кардани истифодаи хотира ва баланд бардоштани иҷроиш дар мавриди шумораи зиёди элементҳоро таъмин мекунад.
  • Идоракунии маълумот: Онҳо бо протоколҳои делегат ва манбаъҳои маълумот ҳамҷоя кор мекунанд, ки навсозӣ ва идоракунии мазмунро осон мекунад.
  • Анимацияҳо ва навсозӣ: Онҳо ба осонӣ имкон медиҳанд, ки ворид кардан, хориҷ кардан ва навсозии элементҳоро аниматсионӣ кунанд.
  • Тарҳрезии чандир: UICollectionView дастгирии тарҳҳои фармоишӣ дорад, ки имкон медиҳад, шабакаҳои мураккаб ва ҷойгиркунии ғайриоддиро эҷод кунад.

Масалан, истифодаи UITableView бо истифодаи такрории ҳуҷраҳо:

class MyViewController: UIViewController, UITableViewDataSource {
    let tableView = UITableView()
    let data = ["Алма", "Банан", "Вишня"]

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
        view.addSubview(tableView)
        tableView.frame = view.bounds
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel?.text = data[indexPath.row]
        return cell
    }
}