Sobes.tech
Junior

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:

  1. UITableView və ya UICollectionView yaradılması: Ekranda müvafiq sinifin nümunəsini yerləşdirin.

  2. DataSource və Delegate təyin edilməsi: Kontrolçu və ya başqa obyekt dataSourcedelegate kimi təyin edin.

    // UITableView üçün nümunə
    tableView.dataSource = self 
    tableView.delegate = self
    
    • dataSource siyahı üçün məlumatların təminatından məsuldur (sektorların/ sətirlərin sayı, hüceyrə məzmunu).
    • delegate istifadəç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.
  3. Hüceyrələrin qeydiyyatı: Hüceyrə siniflərini (UITableViewCell və ya UICollectionViewCell) 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")
    
  4. dataSource metodları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
    }
    
  5. delegate metodları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). UICollectionViewDataSourceUICollectionViewDelegate-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.