SelectedPicker 1.6

SelectedPicker 1.6

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2016年6月
SPM支持 SPM

github 维护。



  • 作者:
  • 高金

AreaCitySelected

使用 Swift 封装 UIPickerView,实现数据的三级联动

示例代码实现省市区三级联动

Xcode 版本: 版本 7.3 (7D175)
iOS SDK8.0以上
Swift2.2

1 支持在Storyboard中直接使用

2 支持代码初始化

使用Storyboard的方法:

准备工作

需要选择的Item必须遵循 ItemDelegate 协议

例如Item为城市示例代码

struct City: ItemDelegate {
    var name: String
    var itemID: Int32
    var parentID: Int32
}

1 在 ViewController 里面添加引用,遵循 SelectedPickerDelegate 协议

@IBOutlet weak var picker: SelectedPicker!

2 ViewDidLoad 方法中

picker.delegate = self
picker.leftItemDataSource()

3 如果需要实现预先选择

示例代码

let  city1 = City(name: "台湾", itemID: 710000, parentID: 0)
let  city2 = City(name: "台南市", itemID: 710300, parentID: 710000)
let  city3 = City(name: "北区", itemID: 710304, parentID: 710300)

picker.selectedArray.append(city1)
picker.selectedArray.append(city2)
picker.selectedArray.append(city3)

3 实现协议方法

三个数据源方法

func loadRightDataArray(item: ItemDelegate) -> [ItemDelegate]? {

let tempArray = dataManager.cityArrayWithProvinceID(item.itemID)

if tempArray.count > 0 {
        return tempArray
    } else {
        return nil
    }
}

func loadLeftDataArray() -> [ItemDelegate]? {

    let tempArray = dataManager.provinceArray()

    if tempArray.count > 0 {
        return tempArray
    } else {
        return nil
    }
}

func loadMidDataArray(item: ItemDelegate) -> [ItemDelegate]? {

    let tempArray = dataManager.cityArrayWithProvinceID(item.itemID)

    if tempArray.count > 0 {
        return tempArray
    } else {
        return nil
    }
}

选择之后调用的方法

  func selectedPickerArray(itemArray: [ItemDelegate]?) {

     var itemString: String = ""

     guard let tempArray = itemArray else {

         print("没有选择")
         return
     }

     for item in tempArray {
         itemString = itemString + item.name
     }

     print(itemString)
 }