У меня есть 3 контроллера вида (Dialer, Audio и Call View Controller), Dialer и Audio только подключены к макетам и вызывают его вызовом через аудио просмотр. Когда я нажимаю на callButton в контроллере просмотра набора, я должен передать значение CallViewController а затем напрямую вызовите AudioViewController, у которого есть StoryBoardID (AudioViewController), но я не знаю, что эта строка возвращает null, поэтому я не могу перейти к AudioViewController.Мгновенный просмотр контроллера с идентификатором возврата nil?
callViewController = storyboard?.instantiateViewControllerWithIdentifier("AudioCallViewController") as! AudioCallViewController
Полный код:
Dialer Вид:
class DialerViewController: UIViewController,UITextFieldDelegate {
@IBOutlet weak var progNameLabel: UILabel!
@IBOutlet weak var progNumberLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onConnectionStatusNotification:", name: NOTIFICATION_PHONE_EVENT, object: nil)
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(true, animated: false)
UIDevice.currentDevice().proximityMonitoringEnabled = false
}
@IBAction func makeCallButton(sender: AnyObject) {
let ownNumber = AppDelegate.sharedInstance().phone?.config().regUser
if !ownNumber!.isEmpty || progNumberLabel.text != ownNumber {
var callViewController: CallViewController?
callViewController = storyboard?.instantiateViewControllerWithIdentifier("AudioCallViewController") as! AudioCallViewController //Exception in this line
callViewController?.number = progNumberLabel.text
//self.presentedViewController(callViewController, animated:true, completion:nil)
navigationController?.pushViewController(callViewController!, animated: true)
}
}
func onConnectionStatusNotification(notification: NSNotification) {
let status = PhoneEvents(rawValue: notification.object!.integerValue)
let _ = status! == .RegSuccess
}
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
}
CallView:
class CallViewController: UIViewController, UITextFieldDelegate {
var number: String?
var callId: Int?
var incoming: Bool?
override func viewDidLoad() {
super.viewDidLoad()
print("The Number is" + number!)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onConnectionStatusNotification:", name: NOTIFICATION_PHONE_EVENT, object: nil)
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(true, animated: false)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "onCallNotification:", name: NOTIFICATION_CALL_EVENT, object: nil)
}
func closeView() {
if self == navigationController?.topViewController {
navigationController?.popViewControllerAnimated(true)
}
}
func onCallNotification(notification: NSNotification) {
}
func onConnectionStatusNotification(notification: NSNotification) {
}
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
}
AudioViewController:
class AudioCallViewController: CallViewController {
.............
}
Я попробую и ответю вам снова –
дайте мне знать, если это сработает! – Chris
Нет, это не сработало! –