初めてSwiftでプログラムを完全にプログラミングしようとしていて、UITableViewを使用して問題に遭遇しました。 私は "exerciseCell"と呼ばれる独自の再利用可能なセルを作成しました。そこにはUIImageviewとUISwitchがあります。再利用可能なテーブルビューのセルは相互作用なしに互いに影響を受けます
私の問題は、行0のスイッチを選択すると3行目と6行目のスイッチがオンに切り替わるということです。これは各セルで同じですが、それぞれ約3セルに影響します。 このテーブルビューの目的は、演習のリストが必要な演習を選択できるようにすることですが、それぞれを個別に選択できる必要があります。ここで
は、セルのためのコードです:また
class exerciseCell: UITableViewCell {
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupViews()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
var cellSelected:Bool = false
let excersiseLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = UIColor.red
label.textAlignment = NSTextAlignment.center
return label
}()
let excersiseImage: UIImageView = {
let image = UIImageView()
image.backgroundColor = UIColor.blue
image.translatesAutoresizingMaskIntoConstraints = false
return image
}()
let thisSwitch: UISwitch = {
let thisSwitch = UISwitch()
thisSwitch.isOn = false
thisSwitch.translatesAutoresizingMaskIntoConstraints = false
return thisSwitch
}()
func setupViews() {
addSubview(excersiseLabel)
addSubview(excersiseImage)
addSubview(thisSwitch)
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|", options: NSLayoutFormatOptions.alignAllCenterX, metrics: nil, views: ["v0": excersiseLabel]))
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-101-[v0(100)]-101-|", options: .alignAllCenterX, metrics: nil, views: ["v0": excersiseImage]))
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-120-[v0(100)]-120-|", options: NSLayoutFormatOptions.alignAllCenterX, metrics: nil, views: ["v0": thisSwitch]))
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-12-[v0(30)]-8-[v1(100)]-12-[v2(30)]-12-|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": excersiseLabel, "v1": excersiseImage, "v2": thisSwitch]))
}
}
次のようにcellForRowがある:
私は、細胞が独立して利用者に対応するために取得できますかfunc tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var thisCell = UITableViewCell()
if tableView == self.tableView {
let aCell = tableView.dequeueReusableCell(withIdentifier: "thirdCellID", for: indexPath) as! exerciseCell
aCell.excersiseLabel.text = "\(mobility[indexPath.row])"
aCell.thisSwitch.tag = indexPath.row
thisCell = aCell
}
return thisCell
}
?私は明確化のために必要ならば、私のコードをもっと提供することができます。
ありがとうございました@Aby、これはお互いに影響を与えないようにしましたが、テーブルビューでスクロールしてからスクロールバックすると、スイッチはオフの位置に戻ります。 私はprivate変数を正しく実行していないかもしれません。私はexerciseNameを割り当てないというエラーを出し続けましたので、名前を ""に初期化しました。 – EtherCode
switchTriggeredメソッドが認識されないためです。私は印刷物(スイッチトリガー)を関数に入れましたが、決して表示されません。セレクタのスタイルは正しいですか? – EtherCode