Bucket Place/IOS Swift

[Swift] UIActionSheet 사용법

Cloud Travel 2015. 5. 31. 17:14

이 글은 본 블러그(destiny738,tistory.com)의 관리자인 Cloud Travel이 작성하였으며, 이후 이익창출에 사용될 수도 있는 글입니다. 본 글의 저작권 역시 본 블러그의 관리자가 가지고 있습니다. 본 글을 무단 복제, 사용, 인용, 변경 등은 사전에 블러그 관리자에게 문의 바랍니다. 이를 어길 경우 법적제제를 받거나 형사고발을 당할 수 있으니 주의하시기 바랍니다. Contact : create738@bucketplace.net / create738@naver.com


1. 여는글


 컴퓨터가 베터리가 떨어져가고있어서.. 간단한거 2개정도만 올리고 오늘은 끝이날 것 같습니다. TableView랑 collectionView, PopoverController, 그리고 keyboard등 이슈에 대해서는 다음주에 정리하겠습니다.


 간단한것 중에서도 가장 간단한 것중 하나인 UIActionSheet에 대해서 알아보도록 합시다. 



2. UIActionSheet


 UIActionSheet는 iOS에서 기본적으로 제공해주는 단일 선택 팝업뷰(Single choice popup view)입니다. 기본으로 제공해주기 때문에 간단한 선택모듈에서는 많이 사용하는 방식입니다. 이를 확장해서 여러개를 선택가능한 UIActionSheet가 여러 사람들에 의해서 만들어지기도 했습니다. 하지만 단일 선택이 아닐 경우에는 차라리 PopoverController와 Delegate를 이용해서 꾸며주는 것이 일반적입니다.



3. 사용법

 

사용법은 매우 쉽고 간단하여, 주석이 포함된 아래의 코드를 읽어보시면 됩니다.

import UIKit

class ViewController: UIViewController, UIActionSheetDelegate {
    
    // 각각의 선택지의 제목
    let ageTitle = ["10대", "20대", "30대", "40대", "50대", "60대 이상"]
    
    // 버튼을 선택했을때 ActionSheet를 열어준다
    @IBAction func tapButton(sender : AnyObject) {
        var sheet: UIActionSheet = UIActionSheet();
        
        // 제목 설정
        sheet.title  = "연령대를 선택해주세요."
        // Delegate설정 : UIActionSheetDelegate를 참조해서 클릭시 반응을 설정해준다.
        sheet.delegate = self
        
        // 취소버튼을 추가한다. 맨처음에 추가하는 것이 관리상 편하다.
        sheet.addButtonWithTitle("Cancel")
        
        // 선택지 아이탬추가
        for title in ageTitle {
            sheet.addButtonWithTitle(title)
        }
        
        // 취소버튼을 Index 값을 통해서 설정. 첫번째 추가하면 아이탬 갯수가 몇개가 되든지 0번으로 설정하면된다.
        sheet.cancelButtonIndex = 0
        // 어떤 뷰에 보여줄지 정하는과 동시에 보여준다.
        sheet.showInView(self.view)
    }
    
    // UIActionSheetDelegate를 통해서 각각의 Item을 클릭했을때의 행동을 정의 해준다.
    func actionSheet(sheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {
        NSLog("index \(buttonIndex) : \(sheet.buttonTitleAtIndex(buttonIndex))")
        // Do Anything...
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
}

 취소버튼으로 선택된 Index는 맨아래 취소버튼의 위치로 이동이 되기때문에 맨위나 맨뒤에 넣도록 하자. 맨뒤에 넣으면 쓸데없는 계산(아이탬의 갯수를 알아야한다)이 필요하기 때문에 맨처음에 넣는 것을 추천한다. 또한, Title값은 생략가능하다.



4. 마치는 글


 베터리가 부족하므로 간단한 것을 이번주에 모두 정리하기 위해서 슝~