각각의 TableViewController가있는 드릴 다운 테이블을 사용하는 응용 프로그램을 만들고 있습니다. 그래서 내 스토리 보드는 다른 TableViewController에 대한 Segue가있는 TableViewController (MainTable)에 Segue가있는 MainViewController로 설정됩니다. SubTable). 나는 프로토콜을 만들었으므로 이제 Delegate로 SubTable을, Delegate로 MainTable을 할당하려고합니다. 내가 발견 한 모든 솔루션은 delegator가 delegate 클래스에서 직접 호출 (또는 segued)되었을 때만 작동합니다.이 경우 prepareForSegue 메소드에서 SubTable.delegate = self
을 사용할 수 있지만 SubTable이 호출되면 작동하지 않습니다) 대리자 클래스 (MainView) 내에서. 죄송합니다. 혼란 스럽다면, 그 중 하나를 분명히 밝힙니다. 여기에 내가 원하는 걸의 예입니다Swift : 위임자 클래스가 직접 하위 클래스가 아닌 경우 위임 클래스를 할당 하시겠습니까?
class MainViewController: UIViewController, delegate {
override func viewDidLoad() {
super.viewDidLoad()
SubTable.delegate = self //Doesn't work
}
func acceptData(data: String!) {
print(data)
}
}
서브 테이블이 아직 생성되지 않았기 때문에 SubTable.delegate = 자기 라인이 작동하지 않습니다,하지만 난 만들 경우 미리 다음 다음 instance.delegate = self
을 let instance = SubTable()
같은 것을 사용하고, MainTable에서 SubTable으로의 Segue가 SubTable의 새로운 인스턴스를 생성하기 때문에 여전히 효과가 없습니다.
protocol delegate {
func acceptData(data: String!)
}
class MainTable: UITableViewController {
}
class SubTable: UITableViewController {
var delegate: delegate?
func sendData() {
self.delegate?.acceptData(data: "some text")
}
}
당신이 탐색 컨트롤러를 사용하고 있습니까? –
대리자를 설정할 사용자 정의 이니셜 라이저를 사용해 보셨습니까? 또는 SubTable 내에서 parentViewController를 사용하고 계십니까? – ohr