在创建一个普通TableView时,上方为todo框,右方为button,下方为UITableView。
在参考链接中,我将第一个视频(视频中使用的是Tabbar进行输入数据转换的),自己就将他们结合到了一起。
出现的问题是:
if editingStyle == UITableViewCellEditingStyle.delete{
ToDos.remove(at: IndexPath.row)//删除行
ToDoTableView.reloadData()//重载数据
}
}
中的
ToDos.remove(at: IndexPath.row)//删除行
代码如下。
import UIKit
var ToDos = [String]()//定义行的字符串为ToDos
class ToDoViewController: UIViewController,UITableViewDelegate,UITableViewDataSource{
@IBAction func AddToDo(_ sender: Any)//添加文字内容
{
if (ToDoTextField.text != "")
{
ToDos.append(ToDoTextField.text!)
ToDoTextField.text = ""
//清除文字,键盘消失
ToDoTextField.text = ""
ToDoTextField.resignFirstResponder()
}
}
@IBOutlet var ToDoTextField: UITextField!
@IBOutlet var ToDoTableView: UITableView!
//在Tableview里添加的行数,每个分区的行数
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (ToDos.count)
}
// 显示cell内容
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = UITableViewCell(style:UITableViewCellStyle.default,reuseIdentifier:"cell")
cell.textLabel?.text = ToDos[indexPath.row]
return cell//返回cell
}
//编辑TableView:删除以及插入
func tableView(_ tableView: UITableView, ccomit editingStyle: UITableViewCellEditingStyle, forRowIndexPath:IndexPath){
if editingStyle == UITableViewCellEditingStyle.delete{
ToDos.remove(at: IndexPath.row)//删除行
ToDoTableView.reloadData()//重载数据
}
}
/*else if editingStyle == UITableViewCellEditingStyle.insert{
ToDos.insert(at: indexPath.row)//插入行
ToDoTableView.reloadData()//重载数据
}
}*/
override func viewDidAppear(_ animated: Bool) {
ToDoTableView.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
//实现上拉缩小大标题,大标题显示模式:自动
navigationItem.largeTitleDisplayMode = .automatic
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
其次参考的,是根据学习软件Py中iOS UserInterface这一章也是制作的Todo。
不太明白想问的问题。
是想问第一部分的代码为什么运行不了吗?
红框的位置缺少了一个 }
这里的 {} 也怪怪的。
建议可以先把代码整理下,这样能方便一些。