當第一次點擊按鈕時,按鈕的標題將從"添加到購物車"變為"進入購物車"。而從下一次點擊開始,該按鈕將導航到下一個螢屏(購物車頁面)[就像Flipkart]。
下面是我的一段代碼:
@IBAction func addToCartbtnTapped(_ sender: Any) {
if let info = detailInfo {
let cartData = CartStruct( cartItems: info, cartQuantity: 1)
self.saveCart(data: cartData)
顯示警報()
(sender as AnyObject).setTitle("Go to Cart" , for: .normal)
let cart = self.storyboard? . instantiateViewController(withIdentifier: "CartViewController") as? CartViewController。
self.navigationController?.pushViewController(cart!, animated: true)
}
}
我能夠改變按鈕的標題。但每當我點擊該按鈕N次時,產品就會被添加到購物車中,螢屏卻無法瀏覽。
如何解決這個問題?
更新。
Update...
override func viewDidLoad( ) {
super.viewDidLoad()
UserDefaults.standard.string(forKey: "btn"/span>)
}
@IBAction func addToCartbtnTapped(_ sender。Any) {
if !Clicked {
if let info = detailInfo {
let cartData = CartStruct( cartItems: info, cartQuantity: 1)
self.saveCart(data: cartData)
showAlert()
addTOCart.setTitle("Go to Cart", for: .normal)
UserDefaults.standard.set("Go to Cart"/span>, forKey: "btn")
print("Clicked")
Clicked = true
return
}
}
if Clicked {
print("執行動作")
let cart = self.storyboard? . instantiateViewController(withIdentifier: "CartViewController") as? CartViewController。
self.navigationController?.pushViewController(cart!, animated: true)
}
}
這就是我試圖存盤"Go to Cart"狀態的方法。
uj5u.com熱心網友回復:
你可以在你的按鈕標題上應用檢查來執行兩個不同的動作。另外,你同時顯示警報和推送視圖控制器,這可能是螢屏無法導航的原因。
@IBAction func addToCartbtnTapped(_ sender: UIButton) {
if let info = detailInfo {
switch sender.currentTitle! {
case "Add to Cart":
let cartData = CartStruct( cartItems: info, cartQuantity: 1)
self.saveCart(data: cartData)
顯示警報()
(sender as AnyObject).setTitle("Go to Cart" , for: .normal)
case "Go to Cart":
let cartData = CartStruct( cartItems: info, cartQuantity: 1)
self.saveCart(data: cartData)
顯示警報()
(sender as AnyObject).setTitle("Go to Cart" , for: .normal)
default:
print("Default Case")
}
}
}
uj5u.com熱心網友回復:
添加這段代碼來檢查購物車是否已經添加,如果已經添加,則根據你的細節控制器改變標題:
添加這段代碼來檢查購物車是否已經添加。
override func viewWillAppear(_ animated: Bool) {
if let info = detailInfo {
let buttonTItle = (self. checkCartData(cartInfo: info) ? "Go to Cart" : "Add to Cart" )
addToCartButton.setTitle(buttonTItle, for: .normal)
}
}
接下來,在添加到購物車之前進行檢查。如果已經添加,將導航到購物車頁面,否則將添加新的購物車專案(同時改變按鈕標題)。
@IBAction func addToCartbtnTapped(_ sender: Any) {
if let info = detailInfo {
if checkCartData(cartInfo: info) {
let cart = self.storyboard? . instantiateViewController(withIdentifier: "CartViewController") as? CartViewController。
self.navigationController?.pushViewController(cart!, animated: true)
} else {
let cartData = CartStruct( cartItems: info, cartQuantity: 1)
self.saveCart(data: cartData)
顯示警報()
(sender as AnyObject).setTitle("Go to Cart" , for: .normal)
}
}
}
在這里檢查購物車資料:
func checkCartData(cartInfo: jsonstruct) -> Bool {
guard let cart = self. getCartData() else { return false }。
return (cart.contains(where: { $0.cartItems.name == cartInfo.name }) ? true : false )
}
用這個方法獲取所有的購物車資料:
func getCartData() -> [CartStruct]? /span> {
let defaults = UserDefaults.standard
var tempCart: [CartStruct]?
if let cdata = defaults.data(forKey: "cartt"/span>) {
tempCart = try! PropertyListDecoder().decode([CartStruct].self, from: cdata)
}
return tempCart
}
uj5u.com熱心網友回復:
import UIKit
class ViewController。UIViewController {
@IBOutlet weak var btn: UIButton!
var Clicked:Bool = false!
override func viewDidLoad() {
super.viewDidLoad()
//在加載視圖后做任何額外的設定。 }
}
@IBAction func btnClick(_ sender。Any) {
if !Clicked {
btn.setTitle("Click"/span>, for: .normal)
print("Clicked")
Clicked = true
return
}
if Clicked {
print("執行動作")
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/306772.html
標籤:
上一篇:獲取所有運行行程的名稱串列
