Mam widok tabeli z liczbą wierszy w zależności od liczby wpisów utworzonych przez użytkownika. Załóżmy, że użytkownik utworzył 2 wpisy, więc mamy 2 wiersze.
Teraz Każdy wiersz po dotknięciu tworzy widok podrzędny z inną tabelą z 2 wierszami i 2 przełącznikami UIS (Podobnie jak drzewo. 2 rzędy, każdy rozwija się do 2 nowych wierszy z przełącznikiem UIS)
Wszystkie stany UISwitch po zmianie aktualizują słownik słowników. na przykład następujące
[0: [0: fałsz, 1: prawda], 1: [0: fałsz, 1: fałsz]]
wiersz 0 -> pierwszy przełącznik: WYŁ., Drugi: WŁ
rząd 1 -> pierwszy przełącznik: WYŁ., Drugi: WYŁ
Scenariusz:
Wszystkie przełączniki UIS są WŁĄCZONE, a zatem: [0: [0: prawda, 1: prawda], 1: [0: prawda, 1: prawda]]
Pierwszy przełącznik UISw 0-tym wierszu wyłączony -> [0: [0: false, 1: true], 1: [0: true, 1: true]]
Drugi przełącznik UISw 1. rzędzie odczepiony -> [0: [0: false, 1: true], 1: [0: fałszywy, 1: fałsz]]
Wyłącza się zgodnie z przeznaczeniem, ale także wszystkie inne (pogrubione), które zostały wyłączone w kroku pierwszym dla innego rzędu przełączników interfejsu użytkownika. Wygląda na to, że pamięta poprzedni krok, ale psuje rzędy.
Kod:
//smallDictionary is a dictionary
//bigDictionary is a dictionary of dictionaries
// smallDictionary is appended to bigDictionary
// row is a variable updated everytime some row is tapped.
@IBAction func switchChanged(sender: UISwitch) {
if sender.on == true {
smallDictionary[sender.tag]! = true
bigDictionary[row]! = globalswitchSaveDict
}
else {
smallDictionary[sender.tag]! = false
bigDictionary[row]! = globalswitchSaveDict
}
}
Odpowiedzi:
0 dla odpowiedzi № 1Naprawiono problem.
Musiałem dodać aline kodu, aby zaktualizować poprawny smallDict, jak pokazano:
@IBAction func switchChanged(sender: UISwitch) {
smallDictionary = bigDictionary[row]!
if sender.on == true {
smallDictionary[sender.tag]! = true
bigDictionary[row]! = globalswitchSaveDict
}
else {
smallDictionary[sender.tag]! = false
bigDictionary[row]! = globalswitchSaveDict
}
}