UISwitch에서 변경 이벤트를 사용하여 현재 ViewController에서 새 ViewController로 이동하려고합니다. 내 UISwitch는 내 UITableView의 사용자 정의 셀에 대한 CustomView에 등록되어 있습니다. 액션은 다음과 같이 내 View Controller에서 클래스를 호출하여 등록됩니다.
import UIKit
public class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var operatedSwitch: UISwitch!
@IBAction func operatedSwitchChange() {
updateValveOps.valveUpdate()
}
내 ViewController의 내 클래스에 도착하면 아래와 같이 새 ViewController로 이동해야하는 메인 클래스의 메서드를 호출합니다.
import UIKit
class updateValveOps {
class func valveUpdate() {
let valveOps = ValveOperationsController()
valveOps.ValveOpsUpdate()
}
}
class ValveOperationsController: UIViewController {
.
.
func ValveOpsUpdate() {
performSegueWithIdentifier("ValveOpsToUpdateSegue", sender: nil)
}
그러나 이로 인해 Sigabrt 오류가 발생합니다. 또한 현재 뷰에서 새 뷰 컨트롤러로 푸시하려고 시도했지만 어떤 이유로 든 호출 뷰 컨트롤러로 돌아갑니다! 내가 도대체 뭘 잘못하고있는 겁니까?
프로토콜을 사용하여이 작업을 수행하는 방법을 찾았습니다. 먼저 ValveOperationsController에 프로토콜을 추가하고 아래와 같이 참조했습니다.
protocol CustomCellDelegator {
func callSegueFromCell()
}
class ValveOperationsController: UIViewController, CustomCellDelegator {
그런 다음 cellForRowInIndexPath의 내 셀에 대리자를 추가했습니다.
cell.delegate = self
그런 다음 내 프로토콜에서 호출 된 메서드를 내 ViewController에 추가했습니다.
func callSegueFromCell() {
performSegueWithIdentifier("ValveOpsToUpdateSegue", sender: nil )
}
그런 다음 CustomTableViewCell로 이동하여 대리인을 추가했습니다.
var delegate:CustomCellDelegator!
그런 다음 스위치가 변경 될 때 호출되는 이벤트에서 내 프로토콜에 호출을 추가했습니다.
if(self.delegate != nil){ //Just to be safe.
self.delegate.callSegueFromCell()
}
스위치가 변경 될 때 이벤트가 호출되면 내 메서드에 전달하는 Protocol을 호출하고 Segue가 성공적으로 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다