как получить указатель пути выбранного средства выбора листов Swift - PullRequest
0 голосов
/ 15 июня 2019

Я запутался. Мне нужен кто-то, чтобы помочь мне. Я пытался использовать средство выбора листов действий, и все было хорошо, но мне нужно получить выбранный элемент. Как я могу это сделать?

 ActionSheetMultipleStringPicker.show(withTitle: "Select Country", rows: [
        countriesArray,], initialSelection: [0],
    doneBlock: {
            picker, indexes, values in


            print("values = \(values)")
            print("indexes = \(indexes)")
            print("picker = \(picker)")

                DispatchQueue.main.async {
                    // Update UI
                    self.performSegue(withIdentifier: "pdfsegue", sender: nil)
                }
            return
    }, cancel:
        {
            ActionMultipleStringCancelBlock in return

    }, origin: sender)

это мои массивы:

var emiratesArray = [String]()
var emiratesIdArray = [Int]()

Я получаю значения в свои массивы из JSON:

let url = NSURL(string: EMIRATES_URL)
    URLSession.shared.dataTask(with: (url as?URL)!, completionHandler: {(data,response,error) ->
        Void in

        if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary
        {

            print(jsonObj.value(forKey: "data")!)


            if let messageArray = jsonObj.value(forKey: "data") as? NSArray
            {
                for message in messageArray
                {
                    if let messageDict = message as? NSDictionary
                    {

                        if let data = data {


                            let successmessage = jsonObj.value(forKey: "success") as? Int

                            if(successmessage == 1)
                            {

                                if let emirate_name = messageDict.value(forKey: "emirate_name")
                                {
                                    self.emiratesArray.append(emirate_name as! String)
                                    print(emirate_name)

                                }

                                if let company_id = messageDict.value(forKey: "id")
                                {
                                    self.emiratesIdArray.append(company_id as! Int)
                                    print(company_id)
                                }


                            } else
                            {

                            }

                        }


                    }
                }
            }

        }


    }).resume()

кто-нибудь, помогите мне, как получить выбранный элемент? Если бы я использовал tableview, то я бы взял идентификатор из [indexpath.row], но в средстве выбора UIActionsheet я не знаю, как получить идентификатор выбранного значения. Пожалуйста, кто-нибудь, помогите мне, пожалуйста

1 Ответ

0 голосов
/ 15 июня 2019

Я не нашел пользовательский класс в вашем коде.Вы можете создать класс, как показано ниже:

class Emirate: NSObject {
    var id: Int
    var name: String

    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }

    override var description: String {
        return self.name
    }
}

Я переопределил свойство description, потому что ActionSheetMultipleStringPicker показывает описание объекта, указанного в массиве, если оно не String.

Объявите ваш Emirate массив

var emiratesArray = [Emirate]()

Ваш запрос API и синтаксический анализ должны быть такими:

let url = NSURL(string: "EMIRATES_URL")
URLSession.shared.dataTask(with: (url as?URL)!, completionHandler: {(data,response,error) ->
    Void in

    if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary
    {

        print(jsonObj.value(forKey: "data")!)


        if let messageArray = jsonObj.value(forKey: "data") as? NSArray
        {
            for message in messageArray
            {
                if let messageDict = message as? NSDictionary
                {

                    if let data = data {


                        let successmessage = jsonObj.value(forKey: "success") as? Int

                        if(successmessage == 1)
                        {

                            if let emirate_name = messageDict.value(forKey: "emirate_name") as? String, let company_id = messageDict.value(forKey: "id") as? Int
                            {
                                self.emiratesArray.append(Emirate(id: company_id, name: emirate_name))
                                print(emirate_name)
                            }


                        } else
                        {

                        }

                    }


                }
            }
        }

    }


}).resume()

Теперь введите ваш лист действий self.emiratesArray

ActionSheetMultipleStringPicker.show(withTitle: "Select Country", rows: [
    self.emiratesArray], initialSelection: [0],
                      doneBlock: {
                        picker, indexes, values in


                        print("values = \(values)")
                        print("indexes = \(indexes)")
                        print("picker = \(picker)")

                        DispatchQueue.main.async {
                            // Update UI
                            self.performSegue(withIdentifier: "pdfsegue", sender: nil)
                        }
                        return
}, cancel:
    {
        ActionMultipleStringCancelBlock in return

}, origin: sender)

Теперь вы получите выбранные Emirate объекты класса в массиве values.

NB- Этот код просто для того, чтобы дать вам представление о том, как он может работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...