두 번째 viewController
에 단추가 있습니다. 두 번째 단추를 닫은 후 두 번째 viewController
을 닫고 첫 번째보기 컨트롤러로 돌아가서 바로 함수를 호출합니다. 그 안에는 ViewController
스위프트 파일이 들어 있습니다.두 번째보기에서 첫 번째보기의 첫 번째 기능
어떻게 할 수 있습니까? 세그에?
두 번째 viewController
에 단추가 있습니다. 두 번째 단추를 닫은 후 두 번째 viewController
을 닫고 첫 번째보기 컨트롤러로 돌아가서 바로 함수를 호출합니다. 그 안에는 ViewController
스위프트 파일이 들어 있습니다.두 번째보기에서 첫 번째보기의 첫 번째 기능
어떻게 할 수 있습니까? 세그에?
과 delegate
을 사용하는 가장 좋은 방법은 여러 가지가 있습니다.
을 하나 만들고 ViewController1
에서 해당 프로토콜을 확장 할 수 있습니다. 이제 ViewController2
에 프로토콜 delegate
을 만들고 ViewController1's
prepareForSegue
메서드에서 해당 대리인의 참조를 전달합니다.
먼저 이제 이런 ViewController1
이 프로토콜을 확장 prepareForSegue
방법 대리인의 참조를 전달이
protocol PassdataDelegate {
func passData()
}
같은 하나의 프로토콜을 작성할
class ViewController1 : UIViewController, PassdataDelegate {
func passData() {
//Here call your function
self.callMyFunction()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "SegueIdentifier") {
let destVC = segue.destinationViewController as! ViewController2
destVC.delegate = self
}
}
}
지금 ViewController2
에 의 대표 객체를 만들 이처럼
class ViewController2 : UIViewController {
var delegate: PassdataDelegate?
//Now call the method of this delegate in Button action
@IBAction func buttonClick(sender: UIButton) {
self.delegate.passData()
//Now dismiss the controller
}
}
참고 : - 여기에서 나는 string
을 전달하지만 사용자는 delegate
메서드에서 선언 한 모든 유형의 객체를 전달할 수 있습니다.
unwind segue
을 참조 할 수 있습니다.
class ViewController1 {
@IBAction func doSomeStuffAfterReload(segue: UIStoryboardSegue) {
// do whatever you need to do here.
}
}
exit outlet
에
button
에서 ViewController2 Ctrl 키 + 드래그에서 스토리 보드에
및 doSomeStuffAfterReload
를 선택합니다.
현재 작업에서 볼 수 있습니다 https://spin.atomicobject.com/2014/10/25/ios-unwind-segues/ 해피 ^^
당신은 1의 ViewController를 설정할 수는 2 뷰 컨트롤러의 속성을 위임입니다 코딩. 버튼을 누르면 첫번째 뷰 콘트롤러에 위임 함수를 호출합니다. – larva
두 번째 뷰 콘트롤러가 제시되면 콜백으로 클로저를 전달하고 'IBAction'에서 클로저를 호출합니다. – vadian