2016-12-09 1 views
0

어디에서 컨트롤을위한 버튼 초기화 코드를 입력할까요? 올바른 ViewController.swift에서 작동하지 않습니까? 왜냐하면 버튼을 누른 후에가 아니라 즉시 초기화를해야하기 때문입니다.스위프트 3 초기화 버튼

예를 들어 버튼에 둥근 모서리를 넣고 싶습니다.

@IBAction func buttonAdd(_ sender: AnyObject) { 
    let button = buttonAdd! 

    button.backgroundColor = UIColor.cyan 

    // button.backgroundColor = .clear 
    button.layer.cornerRadius = 15 
    button.layer.borderWidth = 1 
    button.layer.borderColor = UIColor.black.cgColor 
} 

그러나이 let 문은 함수 밖에서 작동하지 않습니다. 함수에 초기화 코드를 넣어야합니까? 어디에서 함수를 호출할까요?

답변

1

'buttonAdd'는 버튼이 아닌 기능입니다.

이 코드를 시도하십시오.

if let button = sender as? UIButton 
    { 
     button.backgroundColor = UIColor.cyan 

     // button.backgroundColor = .clear 
     button.layer.cornerRadius = 15 
     button.layer.borderWidth = 1 
     button.layer.borderColor = UIColor.black.cgColor 
    } 

그래서, 당신은 roundedCorner 및 테두리와 버튼을 초기화하기 위해서합니다.

뷰 컨트롤러의 수명주기에서 한 번만 호출되는 'viewDidLoad'기능이 있습니다. 한 번만 작업하려면 'viewDidLoad'함수에서 수행하십시오.

override func viewDidLoad() 
    { 
     super.viewDidLoad() 

     let btn = UIButton(type: .custom) 
     btn.frame = .init(x: 100, y: 100, width: 100, height: 30) 
     btn.setTitle("Hello", for: .normal) 
     btn.backgroundColor = UIColor.cyan 
     btn.layer.cornerRadius = 15 
     btn.layer.borderColor = UIColor.black.cgColor 
     btn.layer.borderWidth = 1 

     // you must call this for rounded corner 
     btn.layer.masksToBounds = true 
     self.view.addSubview(btn) 
    } 

인터페이스 작성기에서 단추를 만든 경우 이렇게 할 수 있습니다.

@IBOutlet weak var btn: UIButton! 
override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    btn.layer.cornerRadius = 15 
    btn.layer.borderColor = UIColor.black.cgColor 
    btn.layer.borderWidth = 1 

    // you must call this for rounded corner 
    btn.layer.masksToBounds = true 
} 
+0

나는 buttonAdd가 함수이지만 버튼의 Action 함수이므로 버튼을 누를 때까지 치지 않을 것이므로 버튼의 초기화 코드는 어디에 두어야 할까? 그것은 분명히 그 기능 밖에 있어야합니다. 다시 호출이나 함수에 init 코드를 넣어야합니까 ?? 그리고 나에게 명확하지 않은 다른 사실은 재산. 이름 또는 스위프트에있는 그것의 equivelent가 어디에 있는지입니다. 이름 속성이 없으면 어떻게 컨트롤을 전역 적으로 참조 할 수 있습니까? – ot1

0

나는 당신이보기 컨트롤러에 의해 자동으로 생성 된 다음 함수에 ... ViewController.Swift에 버튼 초기화 코드를 넣을 것이라고 ... 내 질문에 대한 답을 발견하고 당신은 버튼에 추가 버튼 아울렛을 추가해야합니다 동작.

override func viewDidLoad() { 
    super.viewDidLoad() 

    let button = buttonAdd! 

    button.backgroundColor = UIColor.cyan 

    // button.backgroundColor = .clear 
    button.layer.cornerRadius = 10 
    button.layer.borderWidth = 1 
    button.layer.borderColor = UIColor.black.cgColor