Swift - изменить изображение UIButton на его indexpath, если оно имеет идентификатор члена - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть всплывающее окно, в котором я отправляю идентификаторы участников.Когда пользователь нажимает кнопку, изображение кнопки меняется с не отмеченного на отмеченное, и идентификатор участника отправляется на сервер.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        var cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? StartJourneyTableViewCell
        if (cell == nil) {
            cell = StartJourneyTableViewCell(style: .default, reuseIdentifier: "cell")
        }
        cell?.lblPopupName.text = arrPopUpItems[indexPath.row].popUpUserName

        let imageURL = URL(string: arrPopUpItems[indexPath.row].popUpUserImage)
        cell?.imagevewPopup.sd_setImage(with: imageURL, placeholderImage: nil, options: .cacheMemoryOnly, completed: nil)
        let unMarkImage = UIImage(named: "popup unmark")
        let markedImage = UIImage(named: "popup mark")

        if arrStatus.contains(indexPath.row){
            cell?.btnPopUp.setImage(markedImage, for: .normal)
            cell?.btnPopUp.isSelected = true
        }else{
            cell?.btnPopUp.setImage(unMarkImage, for: .normal)
            cell?.btnPopUp.isSelected = false
        }

        cell?.btnPopUp.tag = indexPath.row
        indexPathSelected = indexPath
        cell?.selectionStyle = .none
        cell?.layoutSubviews()
        return cell!
    }

    @IBAction func btnPopUpPressed(_ sender: UIButton) {
        if sender.isSelected == true{
            if arrStatus.contains(sender.tag){
            arrStatus.remove(at: sender.tag)
            }
            sender.setImage(UIImage(named: "popup unmark"), for: .normal)
            sender.isSelected = false
            if let index = arrSelectedMembers.index(of: arrPopUpItems[sender.tag].memberID){
                arrSelectedMembers.remove(at: index)
            }
        }else{
            arrStatus.append(sender.tag)
            sender.setImage(UIImage(named: "popup mark"), for: .normal)
            sender.isSelected = true
            arrSelectedMembers.append(arrPopUpItems[sender.tag].memberID)
            print("Arr selected members are: \(arrSelectedMembers)")
            isBtnSelected = true
        }
    }

Теперь в следующем View Controller я вызываю функцию:

func getJourneyDetails() {
        if Connectivity.isConnectedToInternet{
            let parameters = ["":""]
            CallWebServices.shared.postData(url: Api.developmentURL + Api.getJourney, isAuthorizationReqd: true, parameters: parameters, completion: { (responseObject, error) in
                if responseObject != nil{
                    let json = JSON(responseObject!)
                    let resultCode = json["result_code"].stringValue
                    if resultCode == "-6"{
                        self.getJourneyDetails()
                    }
                    if resultCode == "1"{
                        let resultData = json["result_data"]
                        let trackers = resultData["trackers"].arrayValue
                        for tracker in trackers{
                            self.getMemberID = tracker["member_id"].intValue
                            self.arrTrackers = tracker["member_id"].stringValue
                            self.arrInt.append(self.getMemberID)
                            print("Arr int is: \(self.arrInt)")
                            self.arrGetMembers.append(OngoingPopUpItems(popUpUserName: " ", popUpUserImage: " ", popUpUserCheckmark: " ", memberID: self.arrTrackers))
//                            self.arrStatus.append(self.getMemberID)
                            print("arr get members: \(self.arrGetMembers)")
                        }
                    }
                    print("Response in get journey: \(responseObject!)")
                }
            })
        }else{
            self.showAlert(title: "Error", message: "Check Internet Connection")
        }
    }

и пытаюсь установить тики идентификатора полученного члена так, чтобы они уже отображались в табличном представлении после того, как пользователь нажимает Обновить участников, а такжебыть в состоянии добавить / удалить тех участников снова там, но я не могу достичь этого.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! OngoingTableViewCell
//        if (cell == nil) {
//            cell = OngoingTableViewCell(style: .default, reuseIdentifier: "cell")
//        }

        cell.lblPopUp.text = arrPopUpItems[indexPath.row].popUpUserName
        let imageURL = URL(string: arrPopUpItems[indexPath.row].popUpUserImage)
        cell.imgviwPopUp.sd_setImage(with: imageURL, placeholderImage: nil, options: .cacheMemoryOnly, completed: nil)

        let unMarkImage = UIImage(named: "popup unmark")
        let markedImage = UIImage(named: "popup mark")

        if arrStatus.contains(indexPath.row) {
            cell.btnPopup.setImage(markedImage, for: .normal)
            cell.btnPopup.isSelected = true
        }else{
            cell.btnPopup.setImage(unMarkImage, for: .normal)
            cell.btnPopup.isSelected = false
        }

//        let popupMembers = arrGetMembers[indexPath.row].memberID

//        for popupMember in popupMembers
//        {
//
//        }

//        if arrGetMembers[indexPath.row].memberID .contains(self.arrTrackers){
//            cell.btnPopup.setImage(markedImage, for: .normal)
//            cell.isSelected = true
//        }else{
//            cell.btnPopup.setImage(unMarkImage, for: .normal)
//            cell.isSelected = false
//        }

//        if arrInt.contains(self.getMemberID){
//            cell.btnPopup.setImage(markedImage, for: .normal)
//            cell.isSelected = true
//        }else{
//            cell.btnPopup.setImage(unMarkImage, for: .normal)
//            cell.isSelected = false
//        }


        cell.btnPopup.tag = indexPath.row
        cell.selectionStyle = .none
        cell.layoutSubviews()
        return cell
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...