이 주제에 대한 다른 모든 게시물을 읽었지만 도움이되지 않습니다.UITabbarController에서 segue가 호출되지 않도록 준비하십시오.
두 개의 탭을 실행하는 UITabBarController가 있습니다. tab1에서 수집 된 데이터를 UITabBar ViewController에 전달하려고합니다. 이것에 대해 delegete 프로토콜을 사용하려고하지만 보내는 ViewController에서 대리자 변수를 설정하는 데 문제가 있습니다. segue에 대한 준비는 결코 부르지 않습니다. 나도 탭 컨트롤러의 ViewDidLoad() 안에있는 탭의 viewcontroller를 순환시키지 못합니다. 아직 생성되지 않았고 아무 것도 없기 때문입니다.
이전에 대리인을 사용했으며 다소 단순합니다. Tabbar에서 사용하는 것이 중요합니까?
코드를 실행하면 TabBarViewController의 viewDidLoad()가 호출되지만 preparefor segue는 호출되지 않습니다.
MeViewController에서 IBAction donePressed가 호출되었지만 대리자가 설정되지 않은 것으로 호출되지 않습니다. 왜 당신은 당신의 tabbarController 비록 약간의 정보/데이터를 수신하고 싶어, 모든
protocol DetailsDelegate: class {
func myDetailsGathered(myDetails: MyDetails)
}
/// RECEIVING VIEW CONTROLLER
class TabBarViewController: UITabBarController, DetailsDelegate
{
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
print("prepare for segue called\n");
if let destinationViewController = segue.destination as? MeViewController
{
destinationViewController.delegate = self
}
}
override func viewDidLoad()
{
print("ViewDidLoad Called \n")
}
func myDetailsGathered(myDetails: MyDetails)
{
self.myDetails = myDetails
print("My details gathered \n")
}
}
---------------
/// SENDING VIEW CONTROLLER
class MeViewController: UIViewController
{
weak var delegate: DetailsDelegate?
override func viewDidLoad()
{
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
}
// I have UIButton in the view and this is invoked when its pressed.
@IBAction func donePressed(_ sender: Any)
{
var infoToPass = MyDetails()
print("looks like we are done")
delegate?.myDetailsGathered(infoToPass: myDetails)
}
}
다른 작업을 수행하고 두 번째 탭으로 보낼 수 있도록 보내기를 원합니다.나는 내가 제대로 섹스를 이해하지 못한다는 것을 알고, 나는 그것에 대해 읽을 것이다. 대리자를 초기화하는 또 다른 방법이 있습니까? – SFlow