簡體   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