gpt4 book ai didi

ios - Swift - 从另一个类访问数组

转载 作者:行者123 更新时间:2023-11-28 23:23:04 25 4
gpt4 key购买 nike

在我的项目中,我有一个数组,用户可以在其中追加元素。我现在的问题是我有另一个带有 tableViewclass 我想在其中动态显示所有 elements 所以如果用户添加和 elementarray 它也在我的 tableView 中。

A级

var wishListTitlesArray: [String] = [String]()

B 级

var dropDownOptions = [String]() // TableView data -> here I would like to access `wishListTitlesArray`

更新

非常感谢到目前为止的评论,我遇到了主要问题,但我仍在努力。

我的设置:

我在我的 ViewController-Class 中创建了我的 dropDownButton(其中包含一个 dropDownView),其中还有我的 var wishListTitlesArray.

我试过 dropDownButton.dropView.dropDownOptions = wishListTitlesArray 。然而,这并不能完成全部工作。

@objc func addWishButtonTapped(notification : Notification){

popUpView.popUpTextField.text = ""
self.popUpView.popUpTextField.becomeFirstResponder()

view.addSubview(visualEffectView)
view.addSubview(popUpView)
view.addSubview(wishButton)
self.view.addSubview(dropDownButton)


// constrain blurrEffectView
visualEffectView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
visualEffectView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
visualEffectView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
visualEffectView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

// constrain popUpView
popUpView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
popUpView.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: -50).isActive = true
popUpView.heightAnchor.constraint(equalToConstant: 230).isActive = true
popUpView.widthAnchor.constraint(equalToConstant: view.frame.width - 85).isActive = true

// constrain wishButton
wishButton.centerXAnchor.constraint(equalTo: popUpView.centerXAnchor).isActive = true
wishButton.centerYAnchor.constraint(equalTo: popUpView.centerYAnchor, constant: 70).isActive = true
wishButton.heightAnchor.constraint(equalToConstant: 72).isActive = true
wishButton.widthAnchor.constraint(equalToConstant: 72).isActive = true

// constrain DropDownButton
dropDownButton.centerXAnchor.constraint(equalTo: self.popUpView.centerXAnchor).isActive = true
dropDownButton.centerYAnchor.constraint(equalTo: self.popUpView.centerYAnchor).isActive = true
dropDownButton.widthAnchor.constraint(equalToConstant: 100).isActive = true
dropDownButton.heightAnchor.constraint(equalToConstant: 40).isActive = true

// set the drop down menu's options
dropDownButton.dropView.dropDownOptions = wishListTitlesArray



self.view.bringSubviewToFront(visualEffectView)
self.view.bringSubviewToFront(popUpView)
self.view.bringSubviewToFront(wishButton)
self.view.bringSubviewToFront(dropDownButton)
self.view.bringSubviewToFront(dropDownButton.dropView)

这是用户可以向 wishListTitlesArray 添加元素的地方:

if let txt = listNameTextfield.text {

self.newListTextfield.resignFirstResponder()

// append user-entered text to the data array
self.wishListTitlesArray.append(txt)
self.wishListImagesArray.append(self.image!)

// DonMag3 - append new empty wish array
self.userWishListData.append([Wish]())

let theCustomWishlistView = createCustomWishlistView()

self.view.addSubview(theCustomWishlistView)
// constrain CustomWishlistView
theCustomWishlistView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 120.0).isActive = true
theCustomWishlistView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true
theCustomWishlistView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 30.0).isActive = true
theCustomWishlistView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -30.0).isActive = true
theCustomWishlistView.wishlistImage.image = self.image
theCustomWishlistView.wishlistLabel.text = txt
theCustomWishlistView.transform = CGAffineTransform(translationX: 0, y: 1000)

self.view.bringSubviewToFront(containerView)

// reload the collection view
theCollectionView.reloadData()
theCollectionView.performBatchUpdates(nil, completion: {
(result) in
// scroll to make newly added row visible (if needed)
let i = self.theCollectionView.numberOfItems(inSection: 0) - 1
let idx = IndexPath(item: i, section: 0)
self.theCollectionView.scrollToItem(at: idx, at: .bottom, animated: true)

// close (hide) the "New List" view
self.closeButtonTappedNewList(nil)

})

现在的问题是,如果用户添加一个元素,dropDownOptions 不会相应地更新数据。那么我怎样才能访问更新的列表呢?感谢到目前为止的所有评论!

最佳答案

这是相当简单的 OO 编程。正如有人指出的那样,您正在处理实例变量和类的实例,而不是类。

打个比方:

实例:如果您希望一个类的一个实例从另一个类的实例获取一个值,这就像让您的丰田汽车向您 friend 的本田汽车请求电台预设,并以相同的方式设置您的 radio 。

类(class):丰田汽车公司决定他们喜欢本田使用的 radio 预设,因此他们从本田公司读取 radio 台预设,丰田工厂将这些设置用于所有新丰田汽车。

在 A 类中,将 wishListTitlesArray 公开:

public var wishListTitlesArray: [String] = [String]()

然后,您的 B 类对象将需要一个指向 A 类对象的指针。有多种方法可以做到这一点。假设您将 B 类设置为在初始时间获取 A 类对象:

Class B {
var myAObject: A
var dropDownOptions: [String]

init(aObject: A) {
myAObject = anObject
dropDownOptions = myAObject.wishListTitlesArray
}
//more code here
}

关于ios - Swift - 从另一个类访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59338519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com