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