我正在练习我的koding,试图创建一个可以跟踪我工作中的存储空间的应用程序
我有一个tableView,列出了一个广泛的项目列表。如果我们想要将卫生纸添加到存储器中,我会在tableView中找到该项目,然后按项目(单元格)。然后我使用prepareForSegue
将信息传递给新的ViewController
在新的ViewController中,我有一个minusButton,一个plusButton和一个标签。标签显示项目的名称,pluss-和minusButton计算该项目的数量
当项目数量>> = 1时,它应显示在tableView中。
在tabBarContoller中完成可用项目列表和存储中项目列表之间的选择。
ViewController的代码,包含可用项目:
class AvailableItemsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
let itemsArray = ["Hand soap", "Hand towles", "Toilet paper", "Lightbulbs"]
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
// Do any additional setup after loading the view.
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return itemsArray.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "ItemsCell") as! AvailableItemsTableViewCell
cell.ItemsLabel.text = itemsArray[indexPath.row]
return cell
}
let itemsSegueIdentifier = "ItemsSegue"
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier == itemsSegueIdentifier
{
let destination = segue.destination as! ItemInfoViewController
let itemIndex = tableView.indexPathForSelectedRow?.row
if itemIndex == 0
{
destination.itemName = "Hand soap"
}
if starterIndex == 1
{
destination.itemName = "Hand towles"
}
if starterIndex == 2
{
destination.itemName = "Toilet paper"
}
if starterIndex == 3
{
destination.itemName = "Lightbulbs"
}
}
}
}
}
下一个ViewController:
class ItemInfoViewController: UIViewController {
var counter = Int()
var itemName = String()
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var counterLabel: UILabel!
@IBAction func plussBUtton(_ sender: UIButton)
{
counter += 1
counterLabel.text = String (counter)
if let tbc = self.tabBarController as? CustomTabBarController
{
tbc.totalArray.append("\(counter) pcs \(itemName))")
}
}
@IBAction func minusButton(_ sender: UIButton)
{
if counter != 0
{
counter -= 1
}
//Remove from totalArray
let valueToCheck = itemName
if let tbc = self.tabBarController as? CustomTabBarController
{
tbc.totalArray = tbc.totalArray.filter { $0 != valueToCheck }
counterLabel.text = String (counter)
}
}
override func viewDidLoad() {
super.viewDidLoad()
itemLabel.text = itemName
counterLabel.text = String (counter)
// Do any additional setup after loading the view.
}
当计数器为0时,我很难从totalArray中删除
当我不连接tbc.totalArray = tbc.totalArray.filter { $0 != valueToCheck }
和counter
时,命令itemName
正常工作
那么,当计数器命中0时,我应该如何从数组中删除?
答案 0 :(得分:0)
由于您在增加计数器后附加到totalArray
,因此在删除时也需要以相反的顺序进行,否则计数器不会匹配。所以首先删除(过滤器)然后减少计数器。