我有两个 View Controller (SignInViewcontroller.swift
和 ProfilePage.swift
)
我想将字符串从 SignInViewcontroller
传递到 ProfilePage
viewcontroller
。
我在 SignInViewcontroller
中创建了一个协议(protocol)。我委托(delegate)了 ProfilePage
controller
中的方法。当我通过协议(protocol)发送字符串时,我没有收到string in ProfilePage
viewcontroller
我哪里错了。请帮我解决。
这是我的代码:
SignInViewController.swift
protocol sendTokenDelegate: class {
func sendToken(login:String)
}
class SignInViewController: UIViewController {
weak var delegateToken:sendTokenDelegate?
func loginAzure(email: String, password: String) {
token = "abcdefgh"
self.delegateToken?.sendToken(login: token)
}
}
ProfilePage.swift
class ProfilePage: UIViewController, UITableViewDelegate, UITableViewDataSource, sendTokenDelegate {
override func viewDidLoad() {
let signInVC = SignInViewController()
signInVC.delegateToken = self
}
func sendToken(login: String) {
self.logInToken = login
print("Login Token in Profile Page is \(login)")
}
}
最佳答案
在这种情况下,您需要一个对象来存储来自 SignInViewController 的 token ,直到 ProfilePage 请求它。
class TokenStorage {
static let shared = TokenStorage()
public var token: String = ""
}
然后您收到 token 调用:
TokenStorage.shared.token = receivedToken
并在 ProfilePage 中请求它:
print(TokenStorage.shared.token)
关于ios - swift 3 中的协议(protocol)和委托(delegate)不在 View Controller 之间发送值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46110186/