繁体   English   中英

secondVC中的结构数组未从firstVC追加

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM