cell.accessoryType = .Checkmark
cell.accessoryType = .Checkmark
在我的待办事项列表应用程序中,我使用静态单元格来显示 NSMutableArray 的待办事项项目,这些项目永远不会改变。一旦有人点击了 .Checkmark 的 accessoryType 的单元格并被标记为已完成。我正在尝试做但还没有找到答案的是,一旦数组中的每个项目都完成并添加了一个复选标记,就会为整个列表返回一个 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()
}
我不确定你想如何从这个列表中 return 一个完成日期,可能是通过委托方法或通过展开 segue,但我可以建议一种确定是否检查整个列表的方法.
如果您添加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 调用 - 您可以简单地在调用视图控制器的 unwind 方法中获取当前日期和时间,或者您可以在此视图控制器的 属性 之前设置当前日期调用展开 segue
我认为 Paul 的方法是检查是否
你真的不需要创建另一个数组。 'swifty' 方式。
func allChecked() -> Bool
{
// create an array with only the uncompleted items
let uncompletedArray = self.checkListItems.filter { [=10=].completed == false}
// if this array is empty all items are completed
return uncompletedArray.count == 0;
}
在我的待办事项列表应用程序中,我使用静态单元格来显示 NSMutableArray 的待办事项项目,这些项目永远不会改变。一旦有人点击了 .Checkmark 的 accessoryType 的单元格并被标记为已完成。我正在尝试做但还没有找到答案的是,一旦数组中的每个项目都完成并添加了一个复选标记,就会为整个列表返回一个 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()
}
我不确定你想如何从这个列表中 return 一个完成日期,可能是通过委托方法或通过展开 segue,但我可以建议一种确定是否检查整个列表的方法.
如果您添加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 调用 - 您可以简单地在调用视图控制器的 unwind 方法中获取当前日期和时间,或者您可以在此视图控制器的 属性 之前设置当前日期调用展开 segue
我认为 Paul 的方法是检查是否 你真的不需要创建另一个数组。 'swifty' 方式。
func allChecked() -> Bool
{
// create an array with only the uncompleted items
let uncompletedArray = self.checkListItems.filter { [=10=].completed == false}
// if this array is empty all items are completed
return uncompletedArray.count == 0;
}