/ / UISwitch zmienia jednocześnie dwie wartości - szybkie, uiswitch, utworzone programowo

UISwitch zmienia dwie wartości naraz - szybka, uiswitch, programowo utworzona

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 № 1

Naprawiono 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
}
}