swiftでEurekaという神ライブラリの使用例 

## はじめに
タイトル誤字ってました^^;申し訳ないです(_ _)
###Eurekaとは...
![alt](https://raw.githubusercontent.com/xmartlabs/Eureka/master/Example/Media/EurekaNavigation.gif)
![alt](https://raw.githubusercontent.com/xmartlabs/Eureka/master/Example/Media/EurekaRows.gif)

[公式github](https://github.com/xmartlabs/Eureka)参考

####よくある設定画面のUIを簡単に作ることができる神ライブラリです!

##導入

```ruby:qiita.rb
pod 'Eureka'
pod 'ImageRow'
```
ー> pod install 

ImageRow使うなら一緒に入れてね!
するだけ!

##使用例と注意ポイント!

###こんな設定画面を作ってみたよ!
![alt](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587279/c8af5dd2-4a25-5a18-2f6b-0acc9e68ff96.png)

##code
###①まずFormViewControllerの追加
```swift:swift5
class ViewController: FormViewController {}
```
```swift:swift5
    override func viewDidLoad() {
        super.viewDidLoad()
        form +++ Section("プロフィール画像")
            <<< ImageRow(){
                $0.title = "プロフィール画像"
                $0.sourceTypes = [.Camera,.PhotoLibrary]
                $0.clearAction = .no
            }.cellUpdate { cell, row in
                cell.accessoryView?.layer.cornerRadius =  (cell.accessoryView?.bounds.width)! / 2
            }.onChange({ (ImageRow) in
                self.selectedImage = ImageRow.value!
            })
        
        form +++ Section("自己紹介")
            <<< TextAreaRow("自己紹介を書いてね!!") {
                $0.placeholder = "Notes"
                $0.textAreaHeight = .dynamic(initialTextViewHeight: 50)
                $0.value = self.introductionText
            }
            .onChange({ row in
                self.introductionText = row.value ?? "はじめまして"
            })
        
        form +++ Section("基本情報")
            
            <<< TextRow(){ row in
                row.title = "名前"
                row.placeholder = userNameText
            }.onChange{ row in
                self.userNameText = row.value ?? "userName"
            }
            
            <<< TextRow(){ row in
                row.title = "ユーザーID"
                row.placeholder = userIDText
            }.onChange{ row in
                self.userIDText = row.value ?? "userID"
            }
            
            <<< PickerInlineRow<String>("sex"){ row in
                row.title = "性別"
                row.options = ["未選択","MEN","WOMAN"]
                row.value = selectedSex
            }.onChange({ [unowned self] row in
                self.selectedSex = row.value!
            })

            <<< DateRow(){
                $0.title = "誕生日"
                let birthDay = userDefault.object(forKey: "birthDay") as? Cell<Date>.Value
                if birthDay != nil {
                $0.value = (userDefault.object(forKey: "birthDay") as! Cell<Date>.Value)
                    let age = self.getDays(date: $0.value)
                    self.selectedage = age
                }else{
                    $0.value = Date()
                }
                
            }.onChange({ (date) in
                let birth = date.value
                self.userDefault.set(birth,forKey: "birthDay")
                let age = self.getDays(date: birth)
                self.selectedage = age
            })
    }

```
###おまけ(年齢取得関数)
```swift:swift5
    func getDays(date:Date?,anotherDay:Date? = nil) -> Int{
        var retInterval:Double!
        if anotherDay == nil {
            retInterval = date?.timeIntervalSinceNow
        }else{
            retInterval = date?.timeIntervalSince(anotherDay!)
        }
        let ret = Int(-(retInterval/(86400*365)))
        return ret
    }
```

##注意点
row.value!のように強制アンラップするとtext入力時にnilになった瞬間落ちます(当たり前やけど...w)

            '.onChange({ row in
                self.hogehoge = row.value ?? "はじめまして"
            })'

[参考にさせていただいたcb関数について](http://swift.hiros-dot.net/?p=303)

githubでサンプル載せておきます!
[僕のgithub](https://github.com/okakou13/EurekaSample)

まだswift3ヶ月のひよこ寄りの卵なんで指摘,アドバイス等々コメントでくださると有り難いです!