这是我在 viewDidLoad 中写的。
if DBSession.shared().isLinked() {
print("already linked")
initDropboxRestClient()
}
else
{
print("connecting2")
DBSession.shared().link(from: self)
initDropboxRestClient()
}
和函数 initDropboxRestClient() 写在下面。
func initDropboxRestClient() {
dbRestClient = DBRestClient(session: DBSession.shared())
dbRestClient.delegate = self
dbRestClient.loadMetadata("/")
}
问题是我有两个 View Controller 用于显示保管箱文件名,第一个 View Controller 正在调用委托(delegate)方法并完美地显示文件名和文件夹名称。但第二个不是。
在第二个 View Controller 中,
我观察到,如果我在第二个 View Controller 中上下滚动我的表格 View ,那么委托(delegate)方法会立即被调用,并且一旦它被链接,下次就会立即调用这些方法。
所以第一次委托(delegate)方法没有在我的第二个 Dropbox View Controller 中被调用,这就是我的问题。提前致谢。
restClient 委托(delegate)方法如下。
func restClient(_ client: DBRestClient!, loadedMetadata metadata: DBMetadata!) {
for file in metadata.contents
{
dbMetadataArray.append(file as! DBMetadata)
fileNamesArray.append((file as AnyObject).filename)
}
tableView.reloadData()
self.myActivityIndicator.stopAnimating()
self.myActivityIndicator.hidesWhenStopped = true
}
func restClient(_ client: DBRestClient!, loadMetadataFailedWithError error: Error!) {
print("in loadMetadataFailedWithError method in dropbox email view controller")
print("Error dscription = %@",[error.localizedDescription])
let alert = UIAlertController(title: "Go Back.", message: "Try Once Again", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
self.myActivityIndicator.stopAnimating()
self.myActivityIndicator.hidesWhenStopped = true
tableView.reloadData()
}
最佳答案
有一些事情可能会导致您的委托(delegate)方法不被调用:
另外,请注意,您使用的 SDK 使用 API v1,该 API v1 已被弃用并且很快就会停用:
https://blogs.dropbox.com/developers/2016/06/api-v1-deprecated/
您应该切换到 API v2:
https://www.dropbox.com/developers/documentation
关于ios - Dropbox 委托(delegate)方法不是第一次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44370378/