我创建了一个结构并创建了该类型的数组。结构由两个变量组成:
struct notesarray
{
var prioritycolor : UIColor
var note : String
}
在我的第二个包含collectionViewController的VC中,我创建了一个类型为notesarray的数组。我正在发送prioritycolor的值和来自firstVC的注释。
我将在稍后设置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)
func下放置viewDidAppear
来测试这个,这样每当我进入secondVC时,它会给我数组中的元素,但它也会显示' 0' 0每次。
我不知道我在这里做错了什么。请帮我!
答案 0 :(得分:1)
这是因为每次按下按钮都会得到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
永远不会出现,请考虑创建singleton instance
notesArray
您将在多个VC之间共享的$query ="SELECT * FROM gic_user_preference order by preference_id, sub_preference_id";
$result_preferencea = mysqli_query($createCon->connect(), $query);
$groupedData = [];
while ($result_preference2 = mysqli_fetch_assoc($result_preferencea)) {
$prefId = $result_preference2["preference_id"];
$subPrefId = $result_preference2["sub_preference_id"];
if(!isset($groupedData[$prefId])) $groupedData[$prefId] = [];
$groupedData[$prefId][$subPrefId] = $result_preference2;
}
。
希望有所帮助