2014-10-13 5 views
8
난 그냥 viewDidLoadgetNewPhotoAction IBAction를 메서드를 호출 할
@IBAction func getNewPhotoAction(sender: AnyObject) { 
    println("getNewPhotoAction") 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.getNewPhotoAction(sender: AnyObject) // Error 
} 

하지 않고있는 viewDidLoad 메서드를 @IBAction 호출합니다.스위프트 - 매개 변수

이 줄에 입력 할 매개 변수는 다음과 같습니다. ->self.getNewPhotoAction(?????)?

저는 매개 변수가 없습니다. 전화 할게.

나는 목표 - C 스타일에 사용 :

[self getNewPhotoAction:nil] 

하지만 스위프트 스타일을 모른다.

+0

패스 자기 –

+0

코드없는 것들에 대한 blockquotes을 추가하지 마십시오. 편집하는 경우 명사를 올바르게 대문자로 사용하고 오류를 수정하는 것을 잊지 마십시오. 그냥 따옴표 안에 언어 이름을 추가하는 편집은 허용되지 않습니다. 감사. – Moritz

답변

0

송신자가 없기 때문에 nil을 넘겨야합니다.

self.getNewPhotoAction(nil) 
+0

'getNewPhotoAction's 시그니처를'AnyObject'로 변경해야합니다. –

+1

self.getNewPhotoAction (nil) -> 이미 시도했지만 에러는 – user1272854

3

당신은 항상 당신이있는 viewDidLoad 또는

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.getNewPhoto() 
} 

func getNewPhoto(){ 
    //do whatever you want here. 
    println("getnewphotoaction") 
    println("whatever you want") 
} 
@IBAction func getNewPhotoAction(sender: AnyObject) { 
    self.getNewPhoto() 
} 
+0

입니다. 좋은 해결책입니다. 하지만 직접 메서드를 호출하고 싶습니다 ..어쨌든 당신의 대답에 감사드립니다 – user1272854

+0

이것은 코드에 불필요한 대량을 추가합니다. – Airuop

+1

@Amerino 용액이 더 좋습니다. 중간적이고 이해할 수있는 추상화를 도입합니다. 하지만 직접 전화를 걸려면 내 대답을 확인하십시오. –

28

매개 변수 sender 액션 메소드를 호출하는 사람을 나타냅니다 당신의 IBAction를에에 전화를 별도의 FUNC를 만들 수 있습니다. viewDidLoad에서 전화하는 경우 self을 전달하십시오. getNewPhotoAction 방법의 sender 매개 변수가 사용되지 않은 경우로서

override func viewDidLoad() { 
    super.viewDidLoad() 
    getNewPhotoAction(self) 
} 

은 파라미터 명을 생략 할 수있다.

@IBAction func getNewPhotoAction(AnyObject) { 
    println("getNewPhotoAction") 
} 
2

실제로 any object을 전달할 필요는 없습니다.

@IBAction func getNewPhotoAction() { ... } 

을 그리고 다음과 같이 사용 : 당신이 sender을 사용할 필요가없는 경우,이처럼없이 function를 선언

self.getNewPhotoAction() 
당신은 interface builder에 다시 연결 콘센트해야 할 수 있습니다

이 메서드가 이벤트에 연결된 경우 interface builder에이 변경 작업 (제거한 다음 다시 추가)을 수행합니다.

onNext(UIButton())

는 낭비적인,하지만 적은 코드 : - 당신은 여전히 ​​작업을 전송하고 동시에 코드에서 호출 할되는 무엇이든 UIButton 또는를 참조해야하는 경우

+1

ibaction의 99 %는 발신자에게 아무런 도움이되지 않습니다. 이 둘은 xcode 8에서 오류가 발생하여 코드가 더 간결 해지는 신속한 맹 글링 문제를 해결합니다. 고맙습니다! –

0

당신도 이렇게 할 수 있습니다 . himanshu-padia @ AnyObject 즉 self.getNewPhotoAction (자기)와 같은

1
@IBAction func getNewPhotoAction(sender: AnyObject? = nil) { 
    print("getNewPhotoAction") 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.getNewPhotoAction(nil) 
} 
2
@IBAction func getNewPhotoAction(sender: AnyObject?){ 
    ...... 
} 

**AnyObject** means that you have to pass kind of Object which you are using, nil is not a AnyObject. 
But **AnyObject?**, that is to say AnyObject is Optional, nil is a valid value. 
meaning the absence of a object. 

self .getNewPhotoAction(nil) 
+0

정말 작동합니다. –