2016-11-29 1 views
0

Здесь я использую этот файл библиотеки для создания выпадающего параметра из uiview. Вот библиотека, которую я использую Drop down menu library. Но в этом нам нужно вызвать `menu1.option = [1,2,3,4] 1. Но в моем собственном коде у меня есть отдельный json flie.Как вызвать класс модели nsobject в пункт меню?

Мое требование, все еще сейчас я показываю список графств в uipicker. Но мне нужно показать их в раскрывающемся списке. Как я могу назвать это json menu.option?

Мой код:

menu1.options = ["1","2","2","3","3","4","5"] 

menu1.editable = false 
menu1.delegate = self 

мой предыдущий uipicker показать список стран, как:

if textField == country { 
     ctCountryPicker.showPicker(self, inputText: textField) 
} 

мой JSON код Loding:

/** 
    Loads content from .json file 
    */ 
    private func loadData() { 
     let bundlePath = NSBundle(forClass: CountryPicker.self).pathForResource("SwiftCountryPicker", ofType: "bundle") 

     if let path = NSBundle(path: bundlePath!)!.pathForResource("EmojiCountryCodes", ofType: "json") 
     { 

      do { 
       let jsonData = try NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe) 
       let json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: .AllowFragments) 

       var countryCode: String? 

       if let local = NSLocale.currentLocale().objectForKey(NSLocaleCountryCode) as? String { 
        countryCode = local 
       } 

       guard let countries = json as? NSArray else { 
        print("countries is not an array") 
        return 
       } 

       for subJson in countries{ 

        guard let name = subJson["name"] as? String, iso = subJson["code"] as? String, emoji = subJson["emoji"] as? String else { 

         print("couldn't parse json") 

         break 
        } 

        let country = Country(name: name, iso: iso, emoji: emoji) 

        // set current country if it's the local countr y 
        if country.iso == countryCode { 
         pickedCountry = country 
        } 

        // append country 
        countryData.append(country) 
       } 

       countryData.sortInPlace { $1.name > $0.name } 
       self.reloadAllComponents() 

      } catch { 
       print("error reading file") 

      } 
     } 

    } 
} 

Теперь с помощью menu1.option =, как я могу вызвать свой JSON-файл, чтобы показать список параметров в моем раскрывающемся списке?

+0

ваша проблема страны решить ее ниже код и состояние я уже дать вам объяснение –

ответ

1

создать один файл категории Category_country_codes и создать две функции.

func get_Country(arr : NSArray) -> NSArray { 
     let arr : NSArray = arr.valueForKey("Country") as! NSArray 
     return arr 
} 
func get_state(arr : NSArray , index : NSString) -> NSArray { 
    let arr1 = arr; 
    let namePredicate = NSPredicate(format: "Country like %@",index); 

    let filteredUserData = arr1.filteredArrayUsingPredicate(namePredicate) 
    print("names = ,\(filteredUserData)"); 

    return filteredUserData 
} 

class UserInfoViewController: UIViewController 

var countryname : NSArray = [] 
var arrayOfItems : NSArray = NSArray() 
let category_country = Category_country_codes() 

override func viewDidLoad() { 
     super.viewDidLoad() 

     let chapterPath = NSBundle.mainBundle().pathForResource("country-states", ofType: "plist") 
     arrayOfItems = NSArray(contentsOfFile: chapterPath!)! 
      print(arrayOfItems) 
     menu1.options = self.category_country.get_Country(self.arrayOfItems) as! Array<String> 
     //ctCountryPicker 
     let set = NSSet(array: menu1.options) 
     print(set.allObjects) 
     menu1.options = NSArray(array: set.allObjects as! Array<String>) as! Array<String> 

     menu1.editable = false 
     menu1.delegate = self 

    } 

    func dropDownMenu(menu: ZHDropDownMenu!, didChoose index: Int) { 
     print("\(menu) choosed at index \(index)") 
     let countryname : NSString = menu1.options .objectAtIndex(index) as! NSString 
     let statedata = self.category_country.get_state(self.arrayOfItems, index: countryname) 
     print(statedata .valueForKey("State")) // here set your second menu state . like 
     menu2.option = statedata .valueForKey("State") 
    } 

В ZHDropDownMenu.swfit файле сделал один изменения, которыеDont забыл этот

public var options:NSArray = [] 

Чтение весь мой ответ и обновить свой код. не забыл одобрить его. Счастливое кодирование.

+0

уаг данные: [String: String] { возвращение [ "FirstName": firstName.textVal, "LastName": lastName.textVal, "DateOfBirth": dateOfBirth.textVal, "Электронная почта": emailId.textVal, "Мобильный": mobile.textVal, "Пол": пол, "Страна": COUNTRYNAME, "государство": StateName, "Город": city.textVal] } –

Смежные вопросы