2016-06-10 2 views
5

나는 신속한 학습 과정에 있습니다. 단추를 누르면 프로그램 방식으로 프로그래밍 방식으로 호출하는 방법을 알고 싶습니다 ....이 시도했지만 단추를 누를 때 프로그래밍 프로그램을 시작할 때 함수가 직접 실행됩니다 ... 도와 주시겠습니까 당신이 선택기를 추가하여 selectorNSButton을 신속하게 누르는 경우 간단한 동작 만들기

myButton.action = Selector(printSomething()) 

구문을 추가 ..이 문제를 해결이 테스트 응용 프로그램

// 
// ViewController.swift 
// hjkhjkjh 
// 
// Created by iznogoud on 14/05/16. 
// Copyright © 2016 iznogoud. All rights reserved. 
// 

import Cocoa 


class ViewController: NSViewController { 

    func printSomething() { 
    print("Hello") 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let myButtonRect = CGRect(x: 10, y: 10, width: 100, height: 10) 
    let myButton = NSButton(frame: myButtonRect) 
    view.addSubview(myButton) 
    myButton.target = self 
    myButton.action = Selector(printSomething()) 


    // Do any additional setup after loading the view. 
} 

override var representedObject: AnyObject? { 
    didSet { 
    // Update the view, if already loaded. 
    } 
} 


} 

답변

8
문제는 방식에있다

의 전체 ViewController.swift 아래 당신에게 감사하는 것은 약간 황당 , 함수의 이름을 문자열에 넣으므로, 다음과 같이 작성해야합니다 :

myButton.action = Selector("printSomething") 

콘솔에 Hello으로 보너스를 주어야합니다.

그리고 아마도 구문은 그래서 지금 당신이 쓰기, 그것은 스위프트 2.2 변경되었습니다 사람들이 문제를 일으키는 이유는

myButton.action = #selector(ViewController.printSomething) 

대신. 이는 컴파일러가 이러한 오류를 조기에 발견하도록 도와 줄 수 있다는 것을 의미합니다. 당신은 여기에 ... 스위프트 2.2 here

그래서 릴리스 노트에 대한 자세한 내용을보실 수 있습니다 전체 예입니다 : 당신을 도와줍니다

import Cocoa 

class ViewController: NSViewController { 

    func printSomething() { 
     print("Hello") 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
     let myButtonRect = CGRect(x: 10, y: 10, width: 100, height: 10) 
     let myButton = NSButton(frame: myButtonRect) 
     view.addSubview(myButton) 

     myButton.target = self 
     myButton.action = #selector(ViewController.printSomething) 
    } 

    override var representedObject: AnyObject? { 
     didSet { 
     // Update the view, if already loaded. 
     } 
    } 
} 

희망.

+1

고맙습니다.이 작품은 귀하의 훌륭한 설명에 감사드립니다 !! – iznogoud

+1

환영합니다. 다행이라고 생각합니다. – pbodsk

+0

여러 단추에 대해해야 할 작업과 그 때 새 단추가 만들어 질 때 이전 위치의 y 단추도 변경됩니다. –

관련 문제