在我的应用程序中,我正在研究类似于普通警报应用程序允许您重复几天的事情。在重复日的UITableViewController中,一周中每天有7个单元格(星期日,星期一等)。我想检查哪些单元格被勾选,然后将文本的标签(在另一个视图控制器中)更改为选中标记的单元格(文本:太阳,周一,星期二,星期一和星期二单元格被勾选。)< / p>
我尝试使用for循环并遍历每个单元格,并创建if语句,但是如果需要在此处使用,则有太多if语句。如果你们中的任何人能够向我展示一种更容易实现这一目标的方式,我将非常感激。以下是我的代码片段供参考。
class RepeatVC: UITableViewController {
var repeatText: String? = nil //Text to change in this vc and set in other vc
// var checked: Bool? = false
@IBOutlet var repeatView: UITableView! //UITableView in TableViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showRepeat" { //Segue identifier for segue to this viewcontroller
let displayAddEditAlarm = segue.destination as! AddEditAlarm
displayAddEditAlarm.repeatLabel.text = repeatText //Text I am trying to change in the other viewcontroller
}
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
if(tableView.cellForRow(at: indexPath)?.accessoryType == UITableViewCellAccessoryType.checkmark){
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.none
// // checked = false
// print("\(checked!)")
}
else{
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.checkmark
// // checked = true
// print("\(checked!)")
}
// if(checked == true){
// if(tableView.cellForRow(at: indexPath)?.tag == 0){
// repeatText = "Sunday!"
// print("\(repeatText!) is the repeated day!!!")
// }
// }
}
以下是一些解释我想要的图片:
答案 0 :(得分:1)
我通过执行以下步骤解决了我的问题。 我首先将一个swift文件连接到我的uitableviewcontroller。 然后我创建了一个名为weekdays的变量,并使其成为一种布尔数组。所有7个值都设置为false,这意味着在开头没有检查它们。然后,在didSelectRowAt中,我将其设置为如果选中标记并且选择了相同的单元格(意味着它将更改为无附件类型),则与标记对应的单元格将被设置为false值。如果它没有附件类型(意味着如果选中它将被检查),我反之亦然。然后,我在准备segue时说,如果这些值是真的,那么显示平日,周末,每日或不同日期等术语。
import Foundation
import UIKit
class RepeatVC: UITableViewController {
var lastSelection: NSIndexPath!
var repeatText = ""
var checked: Bool? = false
var weekdays: [Bool] = [false, false, false, false, false, false, false]
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "Repeat"
}
@IBOutlet var repeatView: UITableView!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "backFromRepeat" {
if(weekdays[0] == true){
repeatText += "Sun "
}
if(weekdays[1] == true){
repeatText += "Mon "
}
if(weekdays[2] == true){
repeatText += "Tue "
}
if(weekdays[3] == true){
repeatText += "Wed "
}
if(weekdays[4] == true){
repeatText += "Thu "
}
if(weekdays[5] == true){
repeatText += "Fri "
}
if(weekdays[6] == true){
repeatText += "Sat "
}
if(weekdays[0] == true && weekdays[1] == true && weekdays[2] == true && weekdays[3] == true
&& weekdays[4] == true && weekdays[5] == true && weekdays[6] == true){
repeatText = "Daily"
}
else if(weekdays[0] == true && weekdays[6] == true){
repeatText = "Weekends"
}
else if(weekdays[1] == true && weekdays[2] == true && weekdays[3] == true
&& weekdays[4] == true && weekdays[5] == true){
repeatText = "Weekdays"
}
else if(weekdays[0] == false && weekdays[1] == false && weekdays[2] == false && weekdays[3] == false
&& weekdays[4] == false && weekdays[5] == false && weekdays[6] == false){
repeatText = "Never"
}
let displayAddEditAlarm = segue.destination as! AddEditAlarm
displayAddEditAlarm.repeatLabel.text = repeatText
print("\(repeatText) is my text")
}
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
if(tableView.cellForRow(at: indexPath)?.accessoryType == UITableViewCellAccessoryType.checkmark){
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.none
if(tableView.cellForRow(at: indexPath)?.tag == 0){
weekdays[0] = false
}
if(tableView.cellForRow(at: indexPath)?.tag == 1){
weekdays[1] = false
}
if(tableView.cellForRow(at: indexPath)?.tag == 2){
weekdays[2] = false
}
if(tableView.cellForRow(at: indexPath)?.tag == 3){
weekdays[3] = false
}
if(tableView.cellForRow(at: indexPath)?.tag == 4){
weekdays[4] = false
}
if(tableView.cellForRow(at: indexPath)?.tag == 5){
weekdays[5] = false
}
if(tableView.cellForRow(at: indexPath)?.tag == 6){
weekdays[6] = false
}
}
else{
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.checkmark
if(tableView.cellForRow(at: indexPath)?.tag == 0){
weekdays[0] = true
}
if(tableView.cellForRow(at: indexPath)?.tag == 1){
weekdays[1] = true
}
if(tableView.cellForRow(at: indexPath)?.tag == 2){
weekdays[2] = true
}
if(tableView.cellForRow(at: indexPath)?.tag == 3){
weekdays[3] = true
}
if(tableView.cellForRow(at: indexPath)?.tag == 4){
weekdays[4] = true
}
if(tableView.cellForRow(at: indexPath)?.tag == 5){
weekdays[5] = true
}
if(tableView.cellForRow(at: indexPath)?.tag == 6){
weekdays[6] = true
}
print(weekdays)
}
}
答案 1 :(得分:-1)
每当你想要的东西和#34;回应&#34;对于行动,您可以考虑delegates
或NotificationCenter
查看这个简单的教程,了解如何让代表为您工作 https://www.andrewcbancroft.com/2015/04/08/how-delegation-works-a-swift-developer-guide/
总之,当用户检查一天时,您的label.text将会更改