gpt4 book ai didi

ios - cell.accessoryType = .Checkmark

转载 作者:行者123 更新时间:2023-11-29 02:21:47 25 4
gpt4 key购买 nike

在我的待办事项列表应用程序中,我使用静态单元格来显示永不更改的待办事项的 NSMutableArray。一旦用户点击单元格,accessoryType 为 .Checkmark 并被标记为已完成。我正在尝试做但还没有找到答案的是,一旦数组中的每个项目都完成并添加了一个复选标记,就会为整个列表返回一个 completionDate。我发现可以在 NSArray 或 NSMutableArray 上调用的最接近的方法是 -removeAllObjects,但我不希望数组被破坏。这是一份每日检查表,需要继续提供。我真的很感激有人为我指出正确的方向,甚至为如何做到这一点提供更好的建议。谢谢!

var checklistItems: NSMutableArray = []

override func viewDidLoad() {
super.viewDidLoad()
loadInitialData()

func loadInitialData(){

var item1 = Checklist(name: "Check Tires")
self.checklistItems.addObject(item1)

var item2 = Checklist(name: "Check Controls")
self.checklistItems.addObject(item2)

var item3 = Checklist(name: "Check Lights")
self.checklistItems.addObject(item3)

var item4 = Checklist(name: "Check Oil")
self.checklistItems.addObject(item4)

var item5 = Checklist(name: "Check Chassis")
self.checklistItems.addObject(item5)

var item6 = Checklist(name: "Check Sidestand")
self.checklistItems.addObject(item6)

}

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Potentially incomplete method implementation.
// Return the number of sections.
return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
return self.checklistItems.count
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("ListPrototypeCell", forIndexPath: indexPath) as UITableViewCell

// Configure the cell...
var checklistItems: Checklist = self.checklistItems.objectAtIndex(indexPath.row) as Checklist

cell.textLabel?.text = checklistItems.itemName
if checklistItems.completed{

cell.accessoryType = .Checkmark



}

else{

cell.accessoryType = .None

}

return cell
}

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

tableView.deselectRowAtIndexPath(indexPath, animated: false)

var tappedItem: Checklist = self.checklistItems.objectAtIndex(indexPath.row) as

Checklist

tappedItem.completed = !tappedItem.completed

tableView.reloadData()

}

最佳答案

我不确定您希望如何从此列表中返回完成日期,可能是通过委托(delegate)方法或通过展开转场,但我可以建议一种确定是否检查整个列表的方法。

如果添加一个 NSMutableSet 来保存选中的项目,当选中的项目集的计数等于数组的计数时,您可以快速确定所有项目都被选中 -

var checklistItems: NSMutableArray = []
var checkedItems = NSMutableSet()

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

tableView.deselectRowAtIndexPath(indexPath, animated: false)

var tappedItem: Checklist = self.checklistItems.objectAtIndex(indexPath.row) as

Checklist

tappedItem.completed = !tappedItem.completed

if (tappedItem.completed) {
checkedItems.addObject(tappedItem)
} else {
checkedItems.removeObject(tappedItem)
}
if (self.allChecked()) {
self.performSegueWithIdentifier("unwindFromChecklist", sender:self)
} else {
tableview.reloadData()
}
}

func allChecked() -> Bool {
return checkedItems.count == checklistItems.count
}

我添加了一个 unwind segue 调用——你可以简单地在调用 View Controller 的 unwind 方法中获取当前日期和时间,或者你可以在调用 unwind segue 之前在此 View Controller 的属性中设置当前日期

关于ios - cell.accessoryType = .Checkmark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28055583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com