enum 과 actionsheet 조합을 closure와 조합하여 리스트에 사용하기


enum의 값을 actionsheet에 사용하기 위한 방법이다.


closure를 사용하여 index를 구해 enum list와 조합하여 리스트를 구축하는 방법.




enum.swift


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 통화 타입
enum IsoType : Int
{
    case KRW = 1
    case USD = 2
    case JPY = 3
    
    static let allValues = [KRW, USD, JPY]
    
    func getTypeName() -> String
    {
        switch self
        {
        case .KRW:
            return "KRW (원)"
        case .USD:
            return "USD (달러)"
        case .JPY:
            return "JPY (엔)"
        }
    }
}
cs




viewController.swift


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@IBAction func onclick_btn_isoTypeChange(_ sender: UIButton) {
        
        var alert_isoTypeChange = UIAlertController()
        alert_isoTypeChange = UIAlertController(title: "통화 선택", message: "사용할 통화를 선택하십시오.", preferredStyle: .actionSheet)
        
        let closure = { (index: Intin
        { (action: UIAlertAction!-> Void in
            NSLog("===== ViewController_favoriteItemAdd onclick_btn_isoTypeChange closure : %d", index);
            
            // start Methods
            self.alert_isoTypeChange_onClickIsoType(index: index)
            }
        }
        
        for value in IsoType.allValues
        {
            alert_isoTypeChange.addAction(UIAlertAction(title: value.getTypeName(), style: .default, handler: closure(value.rawValue)))
        }
        alert_isoTypeChange.addAction(UIAlertAction(title: "취소", style: .cancel, handler: nil))
        
        self.present(alert_isoTypeChange, animated: true)
    }
cs


closure에 index를 추가하여 선택 시에 값을 받아오도록 한다.


아무래도 index로 갖고오는게 string비교보다는 훨씬 안전할 것이다.

이 글을 공유하기


댓글(0)

Designed by CMSFactory.NET