gpt4 book ai didi

Swift 3 使用 uialertcontroller 添加新行到 uitableviewcontroller

转载 作者:行者123 更新时间:2023-11-30 12:19:48 24 4
gpt4 key购买 nike

我正在构建一个待办事项列表应用程序。我正在尝试单击添加按钮来添加待办事项。它会打开一个警报,其中包含输入标题。我为添加的项目创建了一个类:

class ToDoItem
{
var title: String


public init(title: String)
{
self.title = title
}
}

这是我添加新行的代码:

func didTapAddItemButton(_ sender: UIBarButtonItem)
{

let alert = UIAlertController(
title: "New to-do item",
message: "Insert the title of the new to-do item:",
preferredStyle: .alert)


alert.addTextField(configurationHandler: nil)

alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))


alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { (_) in
if let title = alert.textFields?[0].text
{
self.addNewToDoItem(title: title)
}
}))


self.present(alert, animated: true, completion: nil)
}

private func addNewToDoItem(title: String)
{

let newIndex = listCourse?.count


listCourse?.append(ToDoItem(title: title))


tableView.insertRows(at: [IndexPath(row: newIndex!, section: 0)], with: .top)
}

但我得到了这个错误:

Cannot convert value of type "ToDoItem" to expected argument type "myItems"

这是 myItems 类:

class myItems {
var title: String?
var content: String?
var date: String?
var author: String?


init(title: String, content: String, date: String, author: String){
self.title = title
self.content = content
self.date = date
self.author = author
}

func mapping(map: Map) {
title <- map["title"]
content <- map["description"]
date <- map["pubDate"]
author <- map["author"]
}
}

这个“myItems”类用于获取json数据,稍后我将从数据库获取数据。

最后一件事:

var listCourse : [myItems]?

listCourse是tableViewController中显示的单元格列表。

我不明白该错误,我只想添加在列表中输入的标题

[编辑]

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "macell1", for: indexPath)
return cell
}

最佳答案

您正尝试向 listCourse 追加一个类型错误的项目。由于您将 listCourse 定义为 myItems 实例的数组,因此您只能向其附加该类的实例。要修复此问题,只需将 var listCourse : [myItems]? 更改为 var listCourse = [ToDoItem]()

还要修复您的 UITableViewDataSource 方法:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "macell1", for: indexPath)
let item = listCourse[indexPath.item]
cell.textLabel.text = item.title
return cell
}

关于Swift 3 使用 uialertcontroller 添加新行到 uitableviewcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44936767/

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