为啥我的阵列没有消耗我发送给它的信息?斯威夫特 4
Posted
技术标签:
【中文标题】为啥我的阵列没有消耗我发送给它的信息?斯威夫特 4【英文标题】:Why is my array not consuming the information I send to it? Swift 4为什么我的阵列没有消耗我发送给它的信息?斯威夫特 4 【发布时间】:2017-11-09 18:05:08 【问题描述】:嗨,我对这个 swift 很陌生,但我知道一点,我正在尝试在我的数组中插入一个图像和 2 个文本,如下所示:
@IBAction func doneEditing(_ sender: Any)
insertNewActy()
print(myCellRows, "Saved")
func insertNewActy()
addTitles = addTitle.text!
addLocations = addLocation.text!
newImages = newImage.image!
let element = MyCellRows(image: newImages,
title: addTitles,
location: addLocations)
myCellRows.insert(element, at: 0)
我有 3 个变量,UIImage
之一和 String
中的 2 个
但是当我按下doneEditing
按钮时没有任何反应
也许我已经放了这个
addTitles = addTitle.text!
addLocations = addLocation.text!
newImages = newImage.image!
在错误的地方?
我的数组看起来像这样
import UIKit
var myCellRows: [MyCellRows] = []
class ActyViewController: UIViewController
@IBOutlet weak var myTableView: UITableView!
func createMyCellArray() -> [MyCellRows]
var myCells: [MyCellRows] = []
let dog = MyCellRows(image: #imageLiteral(resourceName: "Dog"),
title: "Dog",
location: "America")
let cat = MyCellRows(image: #imageLiteral(resourceName: "Cat"),
title: "Cat",
location: "Sweden")
let rabbit = MyCellRows(image: #imageLiteral(resourceName: "Rabbit"),
title: "Rabbit",
location: "Germany")
let tiger = MyCellRows(image: #imageLiteral(resourceName: "Tiger"),
title: "Tiger",
location: "Africa")
myCells.append(dog)
myCells.append(cat)
myCells.append(rabbit)
myCells.append(tiger)
return myCells
我想要完成什么?
我正在尝试将 users Library on the phone
中的带有 2 个自定义文本和 1 个图像的新单元格添加到我的表格视图中。
tableView 代码是正确的,工作正常。
感谢您的宝贵时间。 :)
注意:我在我的
tableView
class 中使用myTableView.reload()
viewDidAppear
【问题讨论】:
你必须使用'MyCellRows'还是你可以改变它的类型来输入字符串 @NiallKehoe 我会,但我也想插入图像,我可以这样做还是必须先创建一个字符串数组,然后再创建一个带图像的数组? 【参考方案1】:您需要将 MyCellRows 实例传递给 myCellRows.insert(_:at:)
调用。如果你想同时插入图片和文字,你可以实例化一个新的MyCellRows(image: ???, title: addTitle.text!, location: ???)
。
如果您想插入一个有标题但没有图像或位置的行,则必须进行一些重新架构。您可以将MyCellRows
上的image
和location
变量设为可选(UIImage?
和String?
),然后传递image: nil
和location: nil
,例如:
myCellRows.insert(MyCellRows(image: nil, title: addTitle.text!, location: nil))
【讨论】:
我试图同时insert
图像、标题和位置,对不起,如果我有点慢,但我是新手,呵呵,我要去insert
这个代码?在insertNewTitle
函数中?
我照你说的做了我写了这个func
insertNewTitle()
myCellRows.insert(MyCellRows(image:
newImages,
title:
addTitles,
location:
@9876544340@@98765444341@at: 0)
987654342at: 0)
9876 987654345@addLocations
=
addLocation.text!
addTitles
=
addTitle.text!
请看我是用这 3 个变量做的,因为我需要将它们转换为 Type String 和 Type UIImage 现在我没有收到任何错误,但是当按下 DoneEditing 按钮时没有任何反应【参考方案2】:
您收到错误是因为数组“myCellRows”包含“MyCellRows”类型的元素,但在func insertNewTitle()
中,您尝试插入字符串类型的元素。
要解决该错误,您必须确保在 func insertNewTitle()
中创建“MyCellRows”类型的实例,然后将元素附加到“MyCellRows”数组。
func insertNewTitle()
let element = MyCellRows(image: #imageLiteral(resourceName: "image"),
title: addTitle.text!,
location: "Location")
myCellRows.insert(element, at: 0)
【讨论】:
我也试过了,我没有收到任何错误,但是当我点击完成时什么也没有出现...... tableView.reloadData() 更新数据数组后。 @PhoneyDeveloper 嘿,我在哪里实现这个功能?在viewDidLoad()
?
@PhoneyDeveloper 我在viewDidAppear()
中写了它但仍然没有任何反应检查我的问题我已经编辑了一点
但是 insertNewActy() 或 insertNewTitle() 必须响应用户操作而发生。无论何时,您都必须再次 reloadData() 。更新数据模型后,您必须重新加载数据()。然后 cellForRowAtIndexPath 将为每个可见行再次调用。以上是关于为啥我的阵列没有消耗我发送给它的信息?斯威夫特 4的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 CAShapeLayer 没有动画? (iOS 斯威夫特)
在 Appium Sendkeys 中没有按预期工作,它发送的比我给它的多
为啥我的 8M L3 缓存对大于 1M 的阵列没有任何好处?