Проблема в передаче значения через делегата - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь передать какое-то значение через делегата, я думаю, что я сделал все для этого, но мои значения не передаются, я запутываюсь, почему он не передает его.Здесь я создаю свой протокол,

protocol VideoCallDelegate {
    func videoCallLog(name : String, number: String)
}
var delegate : VideoCallDelegate?

@IBAction func disconnectCallBtnTapped(_ sender: Any) {

    delegate?.videoCallLog(name: channelName!, number: otherUserNumber!)
}

, и в моем назначении vc я называю его так:

class ContainerCallVC: UIViewController,VideoCallDelegate
func videoCallLog(name: String, number: String) {
    print(name)
    nameArray.append(name)
    numberArray.append(number)
}

1 Ответ

0 голосов
/ 28 сентября 2018

Ваша проблема в том, что это

var delegate : VideoCallDelegate?

равно nil, поэтому при вызове этого

delegate?.videoCallLog(name: channelName, number: otherUserNumber)

ничего не происходит, поэтому убедитесь, что вы установили этот делегат, прежде чем использовать его дляfirstVC, плюс, если вы принудительно развернете, то лучше объявить это с самого начала

func videoCallLog(name : String, number: String)

Edit 1: , когда вы показываете второй VC из ContainerCallVC,такая строка должна быть

let secondVc = // 
secondVc.delegate = self

независимо от того, как вы ее представляете, push / segue / present

Изменить 2 :

здесья полагаю, что вызов находится на вкладке 2 внутри viewDidLoad первой вкладки до

let call = self.tabBarController!.viewControllers[1] as! VideoCallVC 
call.delegate = self
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...