Salut. Ma chinui cu o mica problema: am facut un chestionar sub forma de tabel. Am 6 intrebari cu cate 3 raspunsuri, dar utilizatorul trebuie sa aleaga doar un raspuns din cele trei.
Ca urmare, am facut 6 sectiuni, cu 3 randuri.
In momentul actual, pot sa selectez mai mult de un raspuns pentru o intrebare. Si nu imi dau seama cum sa fac sa fie doar o selectie pe sectiune.
Cam asa ceva as vrea sa fac:
Si in momentul in care se razgandeste si vrea randul 0 din sectia 1, checkmark-ul sa se duca acolo si cel de pe randul 1 sa dispara.
Sper ca m-am facut inteles
Cel mai simplu ar fi sa ai un array de lungimea sectiunilor si sa stochezi ce linie ai selectat in fiecare sectiune. Inainte de a stoca valoarea asta scoti bifa de la linia care a fost stocata inaintea ei. Daca vrei sa si persiste modificarile poate e mai bine sa ai o proprietate in modelul fiecarei linii, daca ai asa ceva. Daca se modifica liniile cea selectata nu se pierde sau devine invalida.
Sper ca logica asta era singura ta problema
let section = indexPath.section
let oldSection = lastIndexPath.section;
let row = indexPath.row;
let oldRow = lastIndexPath.row;
let newCell = tableView.cellForRowAtIndexPath(indexPath);
let oldCell = tableView.cellForRowAtIndexPath(lastIndexPath);
E asa cum ai zis, .ral:cr, ca mi-am dat si eu seama dupa ce am postat. Si am schimbat.
Intre timp, am descoperit un bug: daca selectez randul 1 din sectia 0, apoi randul 2 din sectia 1, cand ma intorc sa schimb selectia din sectia 0(exemplu randul 0), ramane selectat randul precedent din sectia respectiva, pentru lastIndexPath are sectia 1, randul 2.
Acum, toata chestia e pt proiectul de semestru la universitate. Si contez pe faptul ca oamenii cand vor vedea chestionarul, o sa selecteze in ordine, sau cel mult sa isi schimbe selectia in aceeasi sectiune, inainte de a se duce la cea noua.
Proiectul e un fel de Tinder pentru iesit la masa la cantina la facultate. Chestionarul e ca sa potrivim alti oameni cu tine in functie de interese.
Apropo, stie cineva daca e ceva similar pentru iOS: https://github.com/Yalantis/FlipViewPager.Draco
Nu trebuie sa salvezi lastIndexPath, linia o ai deja salvata in array si apoi poti sa reconstruiesti NSIndexPath cu linia respectiva si sectiunea o iei din indexPathul curent.
NSIndexPath(forItem: selectedSection[indexPath.section], inSection: indexPath.section)