私はビューコントローラでテーブルビューを持っていますが、達成したいのは、行が選択されて減算された場合に行1 ... 4に対して5をvar mytotal
に追加することです行が選択解除されている場合は5です。 5行目(最後)のためチェックマークを追加/削除して金額を追加する
Iは、行が選択された場合に10を追加して、行が選択解除された場合に10を減算します。 行が選択されるたびに、セルの右側にチェックマークが追加され、行が選択解除されるとチェックマークが削除されます。
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var mytotal: UILabel!
var total = 0
@IBOutlet weak var tableView: UITableView!
var items = ["Inside Cabinets", "Inside Fridge", "Inside Oven", "Interior windows","Laundry wash & dry"]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "myCell")
}
// number of rows in table
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return self.items.count
}
// create the cells
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell = self.tableView.dequeueReusableCellWithIdentifier("myCell")!
cell.textLabel!.text = self.items[indexPath.row]
cell.accessoryType = UITableViewCellAccessoryType.None
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
var theCell = tableView.cellForRowAtIndexPath(indexPath)!
if theCell.accessoryType == .None {
theCell.accessoryType = .Checkmark
total += 5
self.mytotal.text = String(total)
}
else if theCell.accessoryType == .Checkmark {
theCell.accessoryType = .None
total -= 5
self.mytotal.text = String(total)
}
}
}
このコードの問題のカップルがあります。 isSelected値を持つ 'Item'のインスタンスは、' struct Item'で定義されていないので作成できません。 'struct item'を値' isSelected:Bool'で更新すると、 'items'配列の各項目は' isSelected'を保持する必要があります。私のコードは次のとおりです:https://gist.github.com/bibscy/fb394bbec379ae3950a2671ed1d9d2e1。ありがとう – bibscy
私は今、 'var isSelected:Bool'を' struct Item'に追加し、 'var items'に' isSelected:false'を加えました。しかし、今、いくつかの問題があります。最初にアプリケーションを実行して行をクリックすると、チェックマークは表示されません。その後、行を2回クリックしても、減算する代わりに 'total'に' value'を加え続け、チェックマークが消えないようにします。 https://gist.github.com/bibscy/059b2037ba81dd95680742a60b991aa2 – bibscy
isSelectedに混乱して申し訳ありません。 Items構造体には、選択されていない "isSelected"のみが含まれている必要があります。私は私の答えを書いていたので、誤って変数名を変更しました。 Item構造体に3つのメンバー(name、isSelected、およびvalue)しかないようにコードを更新し、tableView:didSelectRowAtIndexPathコードでisSelectedを更新していることを確認してください。この行はおそらく原因です: 'items [indexPath.row] .isSelected =!items [indexPath.row] .selected'。 'selected'を 'isSelected'に変更します。また、行ラベルを設定するコードを忘れないでください。更新された回答を確認してください。 – Undrea