Ios Swift-从另一个ViewController在TableView中插入项
我遇到了一个问题,我似乎在另一个ViewController中将项目添加到tableView中,但在演示VC时它们不会出现 我也有不同的桌面视图,这使得它有点困难: 这是在我的第一个ViewControllerA中,从这里我可以访问第二个ViewControllerB: 显示第二个ViewController效果很好。我传递的所有变量都是正确的。我唯一的问题是我无法插入一个愿望。没有错误或什么的。用户可以从第一个ViewController添加愿望:Ios Swift-从另一个ViewController在TableView中插入项,ios,swift,uitableview,uicollectionview,delegates,Ios,Swift,Uitableview,Uicollectionview,Delegates,我遇到了一个问题,我似乎在另一个ViewController中将项目添加到tableView中,但在演示VC时它们不会出现 我也有不同的桌面视图,这使得它有点困难: 这是在我的第一个ViewControllerA中,从这里我可以访问第二个ViewControllerB: 显示第二个ViewController效果很好。我传递的所有变量都是正确的。我唯一的问题是我无法插入一个愿望。没有错误或什么的。用户可以从第一个ViewController添加愿望: func insertWish(wishNa
func insertWish(wishName: String, idx: Int, currentWishlistIDX: Int, data: [[Wish]]) {
// append the new wish to the user's currently selected wishlist
var wishes: [Wish] = data[idx]
wishes.append(Wish(withWishName: wishName, checked: false))
userWishListData[currentWishlistIDX] = wishes
// set the updated data as the data for the table view
theTableView.wishList = userWishListData[currentWishlistIDX]
theTableView.tableView.reloadData()
}
@objc func wishButtonTapped(){
dismissPopUpView()
insertWish()
}
对于整个项目,您可以看到我的git非常混乱:
我可能错过了一些非常基本的东西,但我无法理解它是什么,因此我非常感谢您的每一个帮助:您的代码无法工作,因为您正在访问vc中的UI元素,这些元素在实例化view controller之后还没有连接 其次,强烈建议不要对数据源使用多个数组。永远不要那样做。创建一个自定义结构来保存下面代码中一个名为item的项的所有参数,并使用一个名为datasourceArray的数据源数组 然后将该项分配给vc中的临时变量wishList,并将值分配给viewDidLoad中的UI元素 此示例假定来自三个数组的值图像、标题和数据位于自定义结构的一个实例中。您必须重新设计整个数据模型。在闭包中,将项实例传递给vc 在vc中,在viewDidLoad中填充UI元素并重新加载表视图
var wishList : Item!
override func viewDidLoad()
super.viewDidLoad()
wishlistImage.image = wishList.image
// set label
wishlistLabel.text = wishList.title
// set wishlist
theTableView.wishList = wishList.data
theTableView.tableView.reloadData()
}
我看了一下你的项目。对于您的问题,我没有直接的答案,但我建议将您的数据模型移动到一个管理它的类中,以降低视图控制器中的复杂性。这样做可能会使你目前的问题变得无关紧要。@PhillipMills听起来不错,但我不太清楚你的意思,我还是个新手。您可以详细说明一下吗?:我通常创建一个对象,负责在我的应用程序中的其他类之间共享的任何状态信息。视图控制器不存储该信息的副本,也不对其进行操作。相反,它们告诉数据模型对象执行插入、删除或其他操作。当需要显示数据时,会向模型对象请求数据。这样,数据只有一个真实来源,不需要同步本地控制器更新。@PhillipMills我应该使用结构或类来实现我的目的吗?好的,这将需要做很多事情:D,但如果它不起作用,我将尝试再次联系它。谢谢
cell.customWishlistTapCallback = {
// track selected index
self.currentWishListIDX = indexPath.item
let vc = self.storyboard?.instantiateViewController(withIdentifier: "WishlistVC") as! WishlistViewController
vc.wishlist = datasourceArray[indexPath.item]
vc.currentWishListIDX = self.currentWishListIDX
vc.userWishListData = self.userWishListData
self.present(vc, animated: true, completion: nil)
}
var wishList : Item!
override func viewDidLoad()
super.viewDidLoad()
wishlistImage.image = wishList.image
// set label
wishlistLabel.text = wishList.title
// set wishlist
theTableView.wishList = wishList.data
theTableView.tableView.reloadData()
}