EDIT 2:私はそれを持っていたと思ったが、そうはしなかった。ボタンを押したときに配列を作成する必要がありますが、各オブジェクトの.checkmarkにアクセスする方法を理解できません。私はすでにプロパティとして "。選択"していますが、それにアクセスすることはできません。ボタンを使用して配列を作成/追加する
私はチェックマーク付きで3つのセクションにリストを表示するUITableViewを持っています。チェックされている行がある場合、そのNSObjectクラスに関連付けられているboolがfalseからtrueに変更されます。私はUINavigationBarの中に、 "Send"と "Cancel"オプションで警告が表示されるボタンを持っています。ユーザーが「送信」をタップすると、チェックマークが付いたすべての行が配列に追加されます。私は、そのboolを使うのが最善の方法だと考えましたが、アクションのfuncでは配列の各NSObjectに関連付けられたboolを呼び出すことはできません。私は私を助けるために必要と思われるコードの部分を含めました。
編集:誤解していない限り、私はこれが私のクラスをセットアップする方法だと思います。クラスのバールの1つは「var selected:Bool」です。そのクラスからItemを作成すると、falseに設定されます。私はcellForRowAtでうまく表示されている項目のリストを持っていますが、ボタンがタップされても、同じ「sortedList」にアクセスすることはできません。ここにもっとコードがあります。たぶん私はまだ何か他のものを逃していますか?
var arrayOfItemsSelected = [String]()
var sortedItems = [[Item]]()
var itemList: ItemList! {
didSet {
sortedItems = itemList.sortByBrands()
self.tableView.reloadData()
}
}
オーバーライドFUNC用のtableView(_のtableView:のUITableView、cellForRowAt indexPath:IndexPath) - >のUITableViewCell { LET項目= sortedItems [indexPath.section] [indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "UIItemViewCell", for: indexPath)
cell.textLabel?.text = "\(item.name)"
cell.detailTextLabel?.text = "\(item.style)"
cell.accessoryType = cell.isSelected ? .checkmark : .none
cell.selectionStyle = .none // to prevent cells from being "highlighted"
return cell
}
func confirmButtonPressedAction() {
// Create the alert controller
let alertController = UIAlertController(title: "List of checked items", message: stringOfSelectedItems, preferredStyle: .alert)
// Create the actions
let okAction = UIAlertAction(title: "Send", style: UIAlertActionStyle.default) {
UIAlertAction in
self.arrayOfItemsSelected.removeAll()
self.tableView.reloadData()
}
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) {
UIAlertAction in
}
// Add the actions
alertController.addAction(okAction)
alertController.addAction(cancelAction)
// Present the controller
self.present(alertController, animated: true, completion: nil)
}
アイテムにはBool .selectedがあります。セルがチェックされるとtrueに設定され、チェックされない場合はfalseに設定されます。私はその部分を正しくしたと確信しています。なぜ私は完全に理解していないにもかかわらず、今は正しく動作しているようです。しかし、Sendボタンが押されたときにtrueになるアイテムを移入するための新しい配列を作成しました。今私はあなたの最後の段落を心配しています。私はテーブルビューでiOS をデキューするのに十分なセルを入れなかった。私は何が起こるか見る必要があります... – markith