gpt4 book ai didi

swift - UITableViewCell 创建

转载 作者:行者123 更新时间:2023-11-28 10:15:30 24 4
gpt4 key购买 nike

嘿伙计们,我在右边有一个按钮 (+) navigationBarItem ,我正在尝试创建一个功能,当您单击此按钮时,您会创建一个 cellUITableViewCell , 你可以给它一个 title和一个图像。

最佳答案

我将首先创建一个结构来表示您的单元格的数据。

struct Object {
var image: UIImage!
var title: String!
}

然后你可以有一个数组 Object成为您的表格 View 的数据源。
class ViewController: UITableViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

// MARK: Properties

var object: Object?
var objects: [Object] = []
var picker: UIImagePickerController!

// MARK: Lifecycle

override func viewDidLoad() {

super.viewDidLoad()

picker = UIImagePickerController()
picker?.allowsEditing = false
picker?.delegate = self
picker?.sourceType = .photoLibrary
}

// MARK: UITableViewDataSource

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return objects.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = UITableViewCell(style: .default, reuseIdentifier: "Cell")
let object = objects[indexPath.row]

cell.imageView?.image = object.image ?? UIImage()
cell.textLabel?.text = object.title ?? ""

return cell
}

// MARK: UIImagePickerControllerDelegate

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

switch info[UIImagePickerControllerOriginalImage] as? UIImage {
case let .some(image):
object?.image = image
default:
break
}

picker.dismiss(animated: true) {
self.showCellTitleAlert()
}
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {

object = nil

dismiss(animated: true) {
self.tableView.reloadData()
}
}

// MARK: Alerts

private func showCellTitleAlert() {

let alert = UIAlertController(title: "Cell Title", message: nil, preferredStyle: .alert)

alert.addTextField { $0.placeholder = "Title" }
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel) {
self.object = nil
})
alert.addAction(UIAlertAction(title: "Save", style: .default) { _ in
self.object?.title = alert.textFields?.first.flatMap { $0.text }
self.object.flatMap { self.objects.append($0) }
self.tableView.reloadData()
})

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

// MARK: Actions

@IBAction func didSelectCreateButton() {

object = Object()

present(picker, animated: true, completion: nil)
}
}

您将需要一个图像选择器供用户选择图像,并且您可以使用警报 View 来获取用户输入的标题。通过符合 UIImagePickerControllerDelegate ,您可以检测图像何时被拾取或用户是否取消。

当按下创建按钮时,我们创建一个空对象并显示选择器。在我们用所选图像填充对象后,我们会显示文本字段警报 View 。如果按下保存按钮,则将对象添加到数据源并重新加载表 View 。

关于swift - UITableViewCell 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42152097/

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