Sobes.tech
Junior

Kuidas rakendada iOS-is suurt hulka tabeleid?

sobes.tech AI

Vastus AI-lt

Suurte loendite kuvamiseks kasutatakse UITableView või UICollectionView. Need rakendavad korduvkasutuse (Cell Reuse) mustrit, mis võimaldab tõhusalt hallata mälu ja jõudlust.

Peamised sammud:

  1. Loo UITableView või UICollectionView: paigutage ekraanile vastava klassi näide.

  2. Määra DataSource ja Delegate: seadistage kontrollija või muu objekt dataSource ja delegate:

    // Näide `UITableView` jaoks
    tableView.dataSource = self 
    tableView.delegate = self
    
    • dataSource vastutab andmete pakkumise eest loendile (sektsioonide/ridade arv, rakkude sisu).
    • delegate vastutab sündmuste töötlemise eest, mis on seotud kasutaja interaktsiooniga rakkudega (valimine, pühkimine jne), ning välimuse seadistamisega.
  3. Registreeri rakud: registreeri rakuklassid (UITableViewCell või UICollectionViewCell) korduvkasutuseks. Võid kasutada klasse või nib-faile.

    // Näide `UITableViewCell` registreerimisest klassist
    tableView.register(MyCustomCell.self, forCellReuseIdentifier: "MyCellIdentifier")
    
    // Registreerimine nib-failist
    tableView.register(UINib(nibName: "MyCustomCell", bundle: nil), forCellReuseIdentifier: "MyCellIdentifier")
    
  4. dataSource meetodite rakendamine: kohustuslikud UITableViewDataSource meetodid:

    • numberOfSections(in:): tagastab sektsioonide arvu.
    • tableView(_:numberOfRowsInSection:): tagastab ridade arvu sektsioonis.
    • tableView(_:cellForRowAt:): põhimõtteline korduvkasutamise meetod. Siin küsitakse rakku pulgast.
    // Näide `tableView(_:cellForRowAt:)` rakendamisest
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        // Rakukogus pulgast
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellIdentifier", for: indexPath) as? MyCustomCell else {
            fatalError("Ei õnnestu välja võtta MyCustomCell") // Vigade töötlemine
        }
        
        // Rakukonteksti seadistamine andmete põhjal
        let item = data[indexPath.row] // andmete massiiv
        cell.configure(with: item) // Rakukonfiguratsiooni meetod
        
        return cell
    }
    
  5. delegate meetodite rakendamine (valikuline): näiteks, raku vajutamise töötlemine:

    // Näide, kuidas töödelda raku valimist
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let selectedItem = data[indexPath.row]
        // Tegevus valitud elemendiga
        print("Valitud: \(selectedItem)")
    }
    

Rakkude korduvkasutamise põhimõte:

iOS süsteem toetab rakkude pulti, mis enam ei kuvata ekraanil. Kui on vaja kuvada uus rakk (näiteks kerimise ajal), kasutab süsteem varem loodud rakk pulgast. Meetod dequeueReusableCell(withIdentifier:for:) küsib sellist rakku. See säästab märkimisväärselt mälu ja arvutusressursse.

UICollectionView:

Töötab sarnaselt UITableView-ga, kuid pakub suuremat paindlikkust elementide paigutuses (võrgustikud, kohandatud paigutused). Nõuab UICollectionViewDataSource ja UICollectionViewDelegate rakendamist. Selle asemel, et töötada ridade ja rakkudega, töötab see elementide (items) ja sektsioonidega.

UITableView või UICollectionView kasutamine rakkude korduvkasutusega on standardne ja kõige tõhusam viis suurte loendite kuvamiseks iOS-is.