【问题标题】:Struct Array in secondVC not being appended from the firstVCsecondVC 中的结构数组未从 firstVC 附加
【发布时间】:2017-11-10 09:11:50
【问题描述】:

我创建了一个结构并创建了一个该类型的数组。该结构由两个变量组成:

struct notesarray
{
    var prioritycolor : UIColor
    var note : String
}

在包含 collectionViewController 的第二个 VC 中,我创建了一个 notesarray 类型的数组。我正在发送来自 firstVC 的 prioritycolor 值和注释。

稍后我将设置 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 func 下对此进行了测试,这样每当我转到 secondVC 时,它都会为我提供数组中元素的计数,但它每次也显示“0”。

我不知道我在这里做错了什么。请帮我!

【问题讨论】:

    标签: ios arrays swift struct


    【解决方案1】:

    那是因为你每次按下按钮时都会得到一个新的AddedNotesCollectionViewController 实例。

    let secondVC = AddedNotesCollectionViewController()
    

    新实例是用一个空数组启动的,你可以通过调用向它添加一个元素

    secondVC.allnotes.append(notesarray(prioritycolor: taskTextView.backgroundColor!, note: taskTextView.text))
    

    因此计数始终为一。 iOS 是正确的,我的朋友 :)

    您需要什么:

    如果第二个 VC 已经被加载,要么通过将它推送到 FirstVC 的导航堆栈,要么如果它已呈现,则获取对呈现/推送的 VC 的引用,而不是每次都创建一个新的。 SO中有很多答案解释了如何访问推送/模态呈现的VC :)

    如果您要展示/推送 SecondVC,正如您在 cmets 中提到的,您可以随时使用prepareForSegue 来传递数据。

    如果您的 AddedNotesCollectionViewController 从未出现过,那么请考虑创建 singleton instancenotesArray,您将在多个 VC 之间共享。

    希望对你有帮助

    【讨论】:

    • @osama-naeem:一个词:宾果游戏!!!但话虽这么说,有多种方法可以在 VC 之间传递数据,您可以选择更适合您的方法 :) 我会选择 segue,因此我说 Bingo
    • 非常感谢桑迪普!会得到它并回复你:)谢谢!
    • 嘿@Sandeep-Bhandari,只是想问你是否可以帮助我。我正在动态调整我的 collectionviewcells 的大小,但是当我删除特定单元格时,剩余单元格的内容会消失。这是一个详细的帖子:stackoverflow.com/questions/47235608/… 知道这里出了什么问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多