Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择类别单元格和存储单元格或仅从swift中的前一个控制器中选择一个时,从api将数据显示到tableview中_Swift_Xcode - Fatal编程技术网

选择类别单元格和存储单元格或仅从swift中的前一个控制器中选择一个时,从api将数据显示到tableview中

选择类别单元格和存储单元格或仅从swift中的前一个控制器中选择一个时,从api将数据显示到tableview中,swift,xcode,Swift,Xcode,我正在创建一个应用程序,其中我有一个控制器,其中我有一个tableview,当选择c类别部分的单元格或store部分的单元格或仅选择一个单元格时,它将显示上一屏幕中的数据,然后当我单击应用程序中显示的双箭头按钮时,它将导航到tableview屏幕并显示所有数据从类别或存储区或两者都进入tableview。在tableview控制器中,我有一个API,它是POST,有一个“term_ids”的主体参数,其中包含值为556574,用逗号分隔,表示前者用于类别,后者用于存储,或者两个ID都包含类别数据

我正在创建一个应用程序,其中我有一个控制器,其中我有一个tableview,当选择c类别部分的单元格或store部分的单元格或仅选择一个单元格时,它将显示上一屏幕中的数据,然后当我单击应用程序中显示的双箭头按钮时,它将导航到tableview屏幕并显示所有数据从类别或存储区或两者都进入tableview。在tableview控制器中,我有一个API,它是POST,有一个“term_ids”的主体参数,其中包含值为556574,用逗号分隔,表示前者用于类别,后者用于存储,或者两个ID都包含类别数据或存储数据。意味着我必须传递两个ID,并使它们以逗号分隔,然后传递给tableview控制器

假设在类别屏幕截图中,我选择了前两个单元格,当我点击双箭头按钮时,所选单元格数据应传递到另一个屏幕,其屏幕截图如下:

类别数据的api链接: 存储数据的api链接: 优惠券的api链接,我需要根据category and store api链接中的ID将其填充到tableview中:

我的应用程序屏幕截图,以便更好地理解:

我要填充数据的类别屏幕和主主主视图屏幕的代码如下:

categoryViewController的代码如下所示:

类类别ViewController:UIViewController{

//MARK: IBOutlets
@IBOutlet weak var store_bar: UIViewX!
@IBOutlet weak var store_title: UIButton!
@IBOutlet weak var category_title: UIButton!
@IBOutlet weak var category_bar: UIViewX!
@IBOutlet weak var categoryColView: UICollectionView!

var selectedBtnIndex:Int = 1
var selectedIndexPaths = [Int]()
var tempStoreIndexPaths = [Int]()

var categoryData = [ModelCategories]()
var storeData = [ModelStore]()


var arrCategoryImages = [UIImage]()

override func viewDidLoad() {
    super.viewDidLoad()

    // register collectionview cell
    self.categoryColView.register(UINib(nibName: "CategoryCell1", bundle: nil), forCellWithReuseIdentifier: "CategoryCell1")
    self.categoryColView.register(UINib(nibName: "StoresCell", bundle: nil), forCellWithReuseIdentifier: "StoresCell")

    self.store_bar.isHidden = true

    self.getCategoriesList()
    self.getStoreList()

}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

@objc func click_Category(sender: UIButton!) {

    if sender.isSelected == true {
        selectedIndexPaths.append(sender.tag)
        sender.setImage(#imageLiteral(resourceName: "image_checked"), for: .normal)
        sender.isSelected = false
    }else {
        selectedIndexPaths = selectedIndexPaths.filter{ $0 != sender.tag }
        sender.setImage(#imageLiteral(resourceName: "image_unchecked"), for: .normal)
        sender.isSelected = true
    }
}

@objc func click_store(sender: UIButton!) {

    if sender.isSelected == true {
        tempStoreIndexPaths.append(sender.tag)
        sender.setImage(#imageLiteral(resourceName: "image_checked"), for: .normal)
        sender.isSelected = false
    }else {
        tempStoreIndexPaths = tempStoreIndexPaths.filter{ $0 != sender.tag }
        sender.setImage(#imageLiteral(resourceName: "image_unchecked"), for: .normal)
        sender.isSelected = true
    }
}


//MARK: IBActions

@IBAction func categoriesData(_ sender: UIButton) {

    selectedBtnIndex = 1
    self.categoryColView.isHidden = false
    self.store_bar.isHidden = true
    self.category_title.setTitleColor(UIColor.black, for: .normal)
    self.category_bar.isHidden = false
    self.store_title.setTitleColor(UIColor(rgb: 0xAAAAAA), for: .normal)
    self.categoryColView.reloadData()
}

@IBAction func storeData(_ sender: UIButton) {

    selectedBtnIndex = 2
    self.categoryColView.isHidden = false
    self.store_bar.isHidden = false
    self.store_title.setTitleColor(UIColor.black, for: .normal)
    self.category_bar.isHidden = true
    self.category_title.setTitleColor(UIColor(rgb: 0xAAAAAA), for: .normal)
    self.categoryColView.reloadData()

}

@IBAction func showHomeScreen(_ sender: UIButton) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
    if selectedBtnIndex == 1 {
      vc.couponId = categoryData[sender.tag].ID!
    }else {
        vc.couponId = storeData[sender.tag].ID!
    }

    self.navigationController?.pushViewController(vc, animated:true)
}

@IBAction func toSearchPage(_ sender: UIButton) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "SearchPageController") as! SearchPageController
    self.navigationController?.pushViewController(vc, animated:true)
}

func getCategoriesList() {
    if ApiUtillity.sharedInstance.isReachable() {

        ApiUtillity.sharedInstance.StartProgress(view: self.view)

        APIClient<ModelBaseCategoryList>().API_GET(Url: SD_GET_CategoriesList, Params: [:], Authentication: true, Progress: true, Alert: true, Offline: false, SuperVC: self, completionSuccess: { (modelResponse) in

            ApiUtillity.sharedInstance.StopProgress(view: self.view)

            if(modelResponse.success == true) {
                self.categoryData.removeAll()
                let resul_array_tmp_new = modelResponse.categories! as NSArray

                if resul_array_tmp_new.count > 0 {
                    for i in modelResponse.categories! {
                        if i.count != 0 {
                            if let image = UIImage(named: "\(i.slug!.uppercased())") {
                                self.arrCategoryImages.append(image)
                                self.categoryData.append(i)
                            }else {
                                self.arrCategoryImages.append(UIImage(named: "tickets")!)
                                self.categoryData.append(i)
                            }
                        }
                    }
                }
            }
            else {
                self.view.makeToast(modelResponse.message)
            }
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.categoryColView.reloadData()
        }) { (failed) in
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.view.makeToast(failed.localizedDescription)
        }
    }
    else
    {
        self.view.makeToast("No Internet Connection..")
    }
}

func getStoreList() {
    if ApiUtillity.sharedInstance.isReachable() {

        ApiUtillity.sharedInstance.StartProgress(view: self.view)

        APIClient<ModelBaseStoreList>().API_GET(Url: SD_GET_StoreList, Params: [:], Authentication: true, Progress: true, Alert: true, Offline: false, SuperVC: self, completionSuccess: { (modelResponse) in

            ApiUtillity.sharedInstance.StopProgress(view: self.view)

            if(modelResponse.success == true) {

                self.storeData.removeAll()
                let resul_array_tmp_new = modelResponse.store! as NSArray

                if resul_array_tmp_new.count > 0 {
                    for i in modelResponse.store! {
                        if i.count != 0 {
                            self.storeData.append(i)
                        }
                    }
                }
            }
            else {
                self.view.makeToast(modelResponse.message)
            }
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.categoryColView.reloadData()
        }) { (failed) in
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.view.makeToast(failed.localizedDescription)
        }
    }
    else
    {
        self.view.makeToast("No Internet Connection..")
    }
}
var couponsData = [ModelCoupons]()

var couponId = Int()


@IBOutlet weak var homeTblView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.homeTblView.register(UINib(nibName: "HomeCell", bundle: nil), forCellReuseIdentifier: "HomeCell")
    self.post_CouponsData()

}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

//MARK: IBActions
@IBAction func toCategoryScreen(_ sender: UIButton) {
    self.navigationController?.popViewController(animated: true)
}

@IBAction func toSearchPage(_ sender: UIButtonX) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "SearchPageController") as! SearchPageController
    self.navigationController?.pushViewController(vc, animated: true)
}

func post_CouponsData() {
    if ApiUtillity.sharedInstance.isReachable() {

        var params = [String : String]()

        params ["term_ids"] = "\(self.couponId)"

        ApiUtillity.sharedInstance.StartProgress(view: self.view)

        APIClient<ModelBaseCouponsList>().API_POST(Url: SD_POST_CouponsList, Params: params as [String:AnyObject], Authentication: true, Progress: true, Alert: true, Offline: false, SuperVC: self, completionSuccess: { (modelResponse) in

            ApiUtillity.sharedInstance.StopProgress(view: self.view)

            if(modelResponse.success == true) {

                ApiUtillity.sharedInstance.StopProgress(view: self.view)

                let dict = modelResponse.coupons
                for i in dict! {
                    self.couponsData.append(i)
                }

            }else {
                self.view.makeToast(modelResponse.message)
            }
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.homeTblView.reloadData()

        }) { (failed) in
            self.view.makeToast(failed.localizedDescription)
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
        }
    }else {
        self.view.makeToast("No internet connection...")
        ApiUtillity.sharedInstance.StopProgress(view: self.view)
    }
}
homeView控制器的代码如下所示:

导入UIKit

类HomeViewController:UIViewController{

//MARK: IBOutlets
@IBOutlet weak var store_bar: UIViewX!
@IBOutlet weak var store_title: UIButton!
@IBOutlet weak var category_title: UIButton!
@IBOutlet weak var category_bar: UIViewX!
@IBOutlet weak var categoryColView: UICollectionView!

var selectedBtnIndex:Int = 1
var selectedIndexPaths = [Int]()
var tempStoreIndexPaths = [Int]()

var categoryData = [ModelCategories]()
var storeData = [ModelStore]()


var arrCategoryImages = [UIImage]()

override func viewDidLoad() {
    super.viewDidLoad()

    // register collectionview cell
    self.categoryColView.register(UINib(nibName: "CategoryCell1", bundle: nil), forCellWithReuseIdentifier: "CategoryCell1")
    self.categoryColView.register(UINib(nibName: "StoresCell", bundle: nil), forCellWithReuseIdentifier: "StoresCell")

    self.store_bar.isHidden = true

    self.getCategoriesList()
    self.getStoreList()

}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

@objc func click_Category(sender: UIButton!) {

    if sender.isSelected == true {
        selectedIndexPaths.append(sender.tag)
        sender.setImage(#imageLiteral(resourceName: "image_checked"), for: .normal)
        sender.isSelected = false
    }else {
        selectedIndexPaths = selectedIndexPaths.filter{ $0 != sender.tag }
        sender.setImage(#imageLiteral(resourceName: "image_unchecked"), for: .normal)
        sender.isSelected = true
    }
}

@objc func click_store(sender: UIButton!) {

    if sender.isSelected == true {
        tempStoreIndexPaths.append(sender.tag)
        sender.setImage(#imageLiteral(resourceName: "image_checked"), for: .normal)
        sender.isSelected = false
    }else {
        tempStoreIndexPaths = tempStoreIndexPaths.filter{ $0 != sender.tag }
        sender.setImage(#imageLiteral(resourceName: "image_unchecked"), for: .normal)
        sender.isSelected = true
    }
}


//MARK: IBActions

@IBAction func categoriesData(_ sender: UIButton) {

    selectedBtnIndex = 1
    self.categoryColView.isHidden = false
    self.store_bar.isHidden = true
    self.category_title.setTitleColor(UIColor.black, for: .normal)
    self.category_bar.isHidden = false
    self.store_title.setTitleColor(UIColor(rgb: 0xAAAAAA), for: .normal)
    self.categoryColView.reloadData()
}

@IBAction func storeData(_ sender: UIButton) {

    selectedBtnIndex = 2
    self.categoryColView.isHidden = false
    self.store_bar.isHidden = false
    self.store_title.setTitleColor(UIColor.black, for: .normal)
    self.category_bar.isHidden = true
    self.category_title.setTitleColor(UIColor(rgb: 0xAAAAAA), for: .normal)
    self.categoryColView.reloadData()

}

@IBAction func showHomeScreen(_ sender: UIButton) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
    if selectedBtnIndex == 1 {
      vc.couponId = categoryData[sender.tag].ID!
    }else {
        vc.couponId = storeData[sender.tag].ID!
    }

    self.navigationController?.pushViewController(vc, animated:true)
}

@IBAction func toSearchPage(_ sender: UIButton) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "SearchPageController") as! SearchPageController
    self.navigationController?.pushViewController(vc, animated:true)
}

func getCategoriesList() {
    if ApiUtillity.sharedInstance.isReachable() {

        ApiUtillity.sharedInstance.StartProgress(view: self.view)

        APIClient<ModelBaseCategoryList>().API_GET(Url: SD_GET_CategoriesList, Params: [:], Authentication: true, Progress: true, Alert: true, Offline: false, SuperVC: self, completionSuccess: { (modelResponse) in

            ApiUtillity.sharedInstance.StopProgress(view: self.view)

            if(modelResponse.success == true) {
                self.categoryData.removeAll()
                let resul_array_tmp_new = modelResponse.categories! as NSArray

                if resul_array_tmp_new.count > 0 {
                    for i in modelResponse.categories! {
                        if i.count != 0 {
                            if let image = UIImage(named: "\(i.slug!.uppercased())") {
                                self.arrCategoryImages.append(image)
                                self.categoryData.append(i)
                            }else {
                                self.arrCategoryImages.append(UIImage(named: "tickets")!)
                                self.categoryData.append(i)
                            }
                        }
                    }
                }
            }
            else {
                self.view.makeToast(modelResponse.message)
            }
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.categoryColView.reloadData()
        }) { (failed) in
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.view.makeToast(failed.localizedDescription)
        }
    }
    else
    {
        self.view.makeToast("No Internet Connection..")
    }
}

func getStoreList() {
    if ApiUtillity.sharedInstance.isReachable() {

        ApiUtillity.sharedInstance.StartProgress(view: self.view)

        APIClient<ModelBaseStoreList>().API_GET(Url: SD_GET_StoreList, Params: [:], Authentication: true, Progress: true, Alert: true, Offline: false, SuperVC: self, completionSuccess: { (modelResponse) in

            ApiUtillity.sharedInstance.StopProgress(view: self.view)

            if(modelResponse.success == true) {

                self.storeData.removeAll()
                let resul_array_tmp_new = modelResponse.store! as NSArray

                if resul_array_tmp_new.count > 0 {
                    for i in modelResponse.store! {
                        if i.count != 0 {
                            self.storeData.append(i)
                        }
                    }
                }
            }
            else {
                self.view.makeToast(modelResponse.message)
            }
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.categoryColView.reloadData()
        }) { (failed) in
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.view.makeToast(failed.localizedDescription)
        }
    }
    else
    {
        self.view.makeToast("No Internet Connection..")
    }
}
var couponsData = [ModelCoupons]()

var couponId = Int()


@IBOutlet weak var homeTblView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.homeTblView.register(UINib(nibName: "HomeCell", bundle: nil), forCellReuseIdentifier: "HomeCell")
    self.post_CouponsData()

}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

//MARK: IBActions
@IBAction func toCategoryScreen(_ sender: UIButton) {
    self.navigationController?.popViewController(animated: true)
}

@IBAction func toSearchPage(_ sender: UIButtonX) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "SearchPageController") as! SearchPageController
    self.navigationController?.pushViewController(vc, animated: true)
}

func post_CouponsData() {
    if ApiUtillity.sharedInstance.isReachable() {

        var params = [String : String]()

        params ["term_ids"] = "\(self.couponId)"

        ApiUtillity.sharedInstance.StartProgress(view: self.view)

        APIClient<ModelBaseCouponsList>().API_POST(Url: SD_POST_CouponsList, Params: params as [String:AnyObject], Authentication: true, Progress: true, Alert: true, Offline: false, SuperVC: self, completionSuccess: { (modelResponse) in

            ApiUtillity.sharedInstance.StopProgress(view: self.view)

            if(modelResponse.success == true) {

                ApiUtillity.sharedInstance.StopProgress(view: self.view)

                let dict = modelResponse.coupons
                for i in dict! {
                    self.couponsData.append(i)
                }

            }else {
                self.view.makeToast(modelResponse.message)
            }
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
            self.homeTblView.reloadData()

        }) { (failed) in
            self.view.makeToast(failed.localizedDescription)
            ApiUtillity.sharedInstance.StopProgress(view: self.view)
        }
    }else {
        self.view.makeToast("No internet connection...")
        ApiUtillity.sharedInstance.StopProgress(view: self.view)
    }
}

}

@Muhammad Maaz Ul Haq先生,你能帮我吗problem@Muhammad先生,你能帮我解决这个问题吗