[英]Struct Array in secondVC not being appended from the firstVC
我创建了一个结构并制作了该类型的数组。 该结构包含两个变量:
struct notesarray
{
var prioritycolor : UIColor
var note : String
}
在我的第二个VC中,它包含一个collectionViewController,我制作了一个类型为notesarray的数组。 我正在从firstVC发送prioritycolor和note的值。
稍后我将设置CoreData,现在我只希望它以最简单的方式工作。 我将数据从firstVC附加到此数组,如下所示:
@objc func handleCheckButton()
{
print("Added")
let secondVC = AddedNotesCollectionViewController()
secondVC.allnotes.append(notesarray(prioritycolor: taskTextView.backgroundColor!, note: taskTextView.text))
print(secondVC.allnotes.count)
taskTextView.text = nil
}
allnotes是secondVC中找到的数组的名称。
出于测试目的,我正在打印secondVC.allnotes.count
但是无论我向数组中添加元素多少次,我都只会在控制台中得到“ 1”。 我还通过将print(allnotes.count)
放置在secondVC的viewDidAppear
函数下进行了测试,以便每当我访问secondVC时,它都会为我提供数组中元素的数量,但每次也显示为“ 0”。
我不知道我在做什么错。 请帮我!
那是因为每次按下按钮时,您AddedNotesCollectionViewController
都会获得一个AddedNotesCollectionViewController
的新实例。
let secondVC = AddedNotesCollectionViewController()
新实例以一个空数组启动,您可以通过调用添加一个元素
secondVC.allnotes.append(notesarray(prioritycolor: taskTextView.backgroundColor!, note: taskTextView.text))
因此,计数始终为一。 iOS是正确的,我的朋友:)
您需要什么:
如果已经将第二个VC推入FirstVC的导航堆栈中,或者如果已显示第二个VC,则获取该VC的引用,而不是每次都创建一个新的VC。 在SO中有很多答案,它们解释了如何访问推送/模态呈现的VC :)
如您在注释中提到的那样,如果您要展示/推送SecondVC,则始终可以使用prepareForSegue
传递数据。
如果万一从没出现您的AddedNotesCollectionViewController
那么可以考虑创建notesArray
singleton instance
,该singleton instance
将在多个VC之间共享。
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.