单击按钮后将名称附加到数组,然后将其发送到另一个视图控制器
Posted
技术标签:
【中文标题】单击按钮后将名称附加到数组,然后将其发送到另一个视图控制器【英文标题】:Append a name to array after a button is clicked and then send it to another view controller 【发布时间】:2021-04-12 18:20:16 【问题描述】:我正在尝试在我的应用程序中创建一个收藏按钮,如果点击收藏的图像,它将将该地点的名称附加到一个数组中,然后将该数组传递给 UIViewController 内的表格视图。我已经让它传递了一个内部具有预定值的数组,但是当我尝试将名称附加到数组中然后传递它时,下一个视图控制器中的数组显示为空。
这是我的第一个视图控制器:
var fave: [String] = []
@IBAction func faveTapped(_ sender: UIButton)
fave.append(name)
let defaults = UserDefaults.standard
defaults.set(fave, forKey: "faves")
override func viewDidLoad()
super.viewDidLoad()
我在我的第二个视图控制器中有这个表视图:
class nextViewController: UIViewController
var newArray: [String] = []
@IBOutlet var tableView: UITableView!
override func viewDidLoad()
super.viewDidLoad()
if let oldArray: [String] = UserDefaults.standard.object(forKey: "faves") as? [String]
newArray = oldArray
print(newArray)
extension FavouritesViewController: UITableViewDataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return newArray.count
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let rowcell = tableView.dequeueReusableCell(withIdentifier: "rowcell", for: indexPath)
rowcell.textLabel?.text = newArray[indexPath.row]
return rowcell
【问题讨论】:
如果它解决了您的问题,请接受答案。它可能会帮助某人 【参考方案1】:当您追加新数据时,您不会保存到 UserDefaults
。当viewDidLoad
执行时,数组仍然是空的。这样做:
@IBAction func faveTapped(_ sender: UIButton)
fave.append(name)
let defaults = UserDefaults.standard
defaults.set(fave, forKey: "faves")
【讨论】:
我已经这样做了,但现在我遇到了一个新问题,当我最喜欢一个地方时,表格不会更新,更新表格的唯一方法是我杀死应用程序并返回在。其次,它不会添加我点击的所有地方,只会将我点击的最后一个地方保存到数组中。 您是否从viewDidLoad
中删除了设置UserDefaults
的代码?另外,你是如何过渡到第二个 ViewController 的?
我从“viewDidLoad”中删除了它我有一个标签视图控制器,所以收藏夹页面位于我的第一个视图控制器标签旁边的标签上。
是的,我是这么想的。您需要将.object(forKey: "faves")
调用放在ViewWillAppear
的第二个ViewController 中。 ViewDidLoad
只被调用一次,因为它在 TabBarController 中
没有。只需将viewDidLoad
中的代码放入viewWillAppear
中,用于第二个 ViewController以上是关于单击按钮后将名称附加到数组,然后将其发送到另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ionic 2,您如何通过登录后将您发送到另一个页面的模式来更改基于登录状态的按钮?