iOS-də çox sayda hüceyrə olan siyahını necə həyata keçirmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Böyük siyahıları göstərmək üçün UITableView və ya UICollectionView istifadə olunur. Onlar hüceyrələrin təkrar istifadəsi (Cell Reuse) nümunəsini həyata keçirirlər, bu da yaddaş və performansı effektiv idarə etməyə imkan verir.
Əsas addımlar:
-
UITableViewvə yaUICollectionViewyaradılması: Ekranda müvafiq sinifin nümunəsini yerləşdirin. -
DataSource və Delegate təyin edilməsi: Kontrolçu və ya başqa obyekt
dataSourcevədelegatekimi təyin edin.// UITableView üçün nümunə tableView.dataSource = self tableView.delegate = selfdataSourcesiyahı üçün məlumatların təminatından məsuldur (sektorların/ sətirlərin sayı, hüceyrə məzmunu).delegateistifadəçi ilə qarşılıqlı əlaqə ilə bağlı hadisələri idarə edir (seçim, swipe-lər və s.), həmçinin görünüşün tənzimlənməsi.
-
Hüceyrələrin qeydiyyatı: Hüceyrə siniflərini (
UITableViewCellvə yaUICollectionViewCell) təkrar istifadə üçün qeydiyyatdan keçirin. Siniflər və ya nib fayllar istifadə edilə bilər.// Xüsusi UITableViewCell sinifinin qeydiyyatı nümunəsi tableView.register(MyCustomCell.self, forCellReuseIdentifier: "MyCellIdentifier") // Nib faylından xüsusi UITableViewCell qeydiyyatı nümunəsi tableView.register(UINib(nibName: "MyCustomCell", bundle: nil), forCellReuseIdentifier: "MyCellIdentifier") -
dataSourcemetodlarının həyata keçirilməsi:UITableViewDataSourceüçün vacib metodlar:numberOfSections(in:): Sektorların sayını qaytarır.tableView(_:numberOfRowsInSection:): Sektor içində sətirlərin sayını qaytarır.tableView(_:cellForRowAt:): Əsas metod təkrar istifadəyə. Bu metodda pool-dan hüceyrə soruşulur.
// `tableView(_:cellForRowAt:)` metodunun nümunəsi func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // Pool-dan təkrar istifadə üçün hüceyrə alın guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellIdentifier", for: indexPath) as? MyCustomCell else { fatalError("MyCustomCell alınmadı") // Xəta idarəsi } // Hüceyrənin məzmununu məlumatlara əsasən tənzimləyin let item = data[indexPath.row] cell.configure(with: item) // Hüceyrənin tənzimləmə metodu return cell } -
delegatemetodlarının həyata keçirilməsi (istəyə bağlı): Məsələn, hüceyrəyə klikləmə üçün:// Hüceyrənin seçilməsinin işlənməsi nümunəsi func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let selectedItem = data[indexPath.row] // Seçilmiş elementlə əlaqəli əməliyyat print("Seçildi: \(selectedItem)") }
Hüceyrələrin təkrar istifadəsi prinsipi:
iOS sistemi, ekranda artıq göstərilməyən hüceyrələrin pool-un saxlanmasını təmin edir. Yeni hüceyrə göstərilərkən (məsələn, sürüşdürmə zamanı), yeni yaratmaq yerinə, sistem əvvəlki yaradılmış hüceyrəni istifadə edir. dequeueReusableCell(withIdentifier:for:) metodu belə bir hüceyrəni soruşur. Bu yaddaş və hesablama resurslarını xeyli qənaət edir.
UICollectionView:
UITableView-ə bənzəyir, lakin elementlərin yerləşdirilməsində daha çox elastiklik təmin edir (şəbəkələr, xüsusi layoutlar). UICollectionViewDataSource və UICollectionViewDelegate-in həyata keçirilməsini tələb edir. Sətirlər və hüceyrələr yerinə, elementlər (items) və sektsiyalar ilə işləyir.
UITableView və ya UICollectionView-in hüceyrələrin təkrar istifadəsi ilə istifadəsi, iOS-də böyük siyahıların göstərilməsi üçün standart və ən effektiv yoldur.