Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 导航UI未使用Xcode 9更新_Ios_Swift_Xcode_User Interface_Uinavigationitem - Fatal编程技术网

Ios 导航UI未使用Xcode 9更新

Ios 导航UI未使用Xcode 9更新,ios,swift,xcode,user-interface,uinavigationitem,Ios,Swift,Xcode,User Interface,Uinavigationitem,从服务器下载完数据模型后,我尝试更新navigationItem标题视图 大概是这样的: private func loadNews() { self.newsModelManager.sendRequest(inBackground: false, preSendHandler: { (isReachable) in if isReachable { } else { appDelegate.showInternetFailed

从服务器下载完数据模型后,我尝试更新navigationItem标题视图

大概是这样的:

private func loadNews() {
    self.newsModelManager.sendRequest(inBackground: false, preSendHandler: { (isReachable) in
        if isReachable {

        } else {
            appDelegate.showInternetFailedAlertView()
        }
    }, successHandler: { (response) in
        print("loadNewsModel: successHandler")
    }, errorHandler: { (response) in
        print("loadNewsModel: errorHandler")
    }, reloginFailHandler: { (response) in
        appDelegate.showReloginFailedAlertView()
    }) { (isReachable) in
        let array = self.newsModelManager.loadFirstFiveNews()!
        DispatchQueue.main.async {
            self.setupTitle_ViewWith(array: array)
        }
    }
}
并在seupTitle_视图中使用(数组:)

这一切都很好,直到最后一行
self.title\u View=newsttitle\u View

我想这会把我的标题视图更新到我的CustomView, 但这不是。。。。 那里可能出了什么问题

我首先用realm从服务器保存模型,并在
let array=self.newsModelManager.loadFirstFiveNews()处读取


但是,假设我的设备中已经有数据,并且不需要先加载就可以直接读取,它完全可以正常工作…

我认为您可以通过使用本地通知来解决这个问题

1) 像这样更改loadNews函数

private func loadNews() {
    self.newsModelManager.sendRequest(inBackground: false, preSendHandler: { (isReachable) in
        if isReachable {

        } else {
            appDelegate.showInternetFailedAlertView()
        }
    }, successHandler: { (response) in
        print("loadNewsModel: successHandler")
    }, errorHandler: { (response) in
        print("loadNewsModel: errorHandler")
    }, reloginFailHandler: { (response) in
        appDelegate.showReloginFailedAlertView()
    }) { (isReachable) in
        let array = self.newsModelManager.loadFirstFiveNews()!
        DispatchQueue.main.async {
            NSNotificationCenter.defaultCenter().postNotificationName("refresh", object:array)
        }
    }
}
2) 然后在ViewController中将其粘贴到viewDidLoad中

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.setupTitle_ViewWith), name: "refresh", object: array)
(三)


我想你可以通过使用本地通知来解决这个问题

1) 像这样更改loadNews函数

private func loadNews() {
    self.newsModelManager.sendRequest(inBackground: false, preSendHandler: { (isReachable) in
        if isReachable {

        } else {
            appDelegate.showInternetFailedAlertView()
        }
    }, successHandler: { (response) in
        print("loadNewsModel: successHandler")
    }, errorHandler: { (response) in
        print("loadNewsModel: errorHandler")
    }, reloginFailHandler: { (response) in
        appDelegate.showReloginFailedAlertView()
    }) { (isReachable) in
        let array = self.newsModelManager.loadFirstFiveNews()!
        DispatchQueue.main.async {
            NSNotificationCenter.defaultCenter().postNotificationName("refresh", object:array)
        }
    }
}
2) 然后在ViewController中将其粘贴到viewDidLoad中

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.setupTitle_ViewWith), name: "refresh", object: array)
(三)


您好,这里是解决此问题的简要总结,供可能面临类似问题的其他人参考,

@Ian在问题中共享的代码已添加到NavigationController子类中
问题是在这里引起的。由于您无法从导航控制器更新导航标题或标题视图,因此请参阅此答案()



因此,我们尝试从viewController更新标题视图,它解决了我们的问题。

嗨,这里是解决此问题的简要总结,供其他可能面临类似问题的人参考,

@Ian在问题中共享的代码已添加到NavigationController子类中
问题是在这里引起的。由于您无法从导航控制器更新导航标题或标题视图,因此请参阅此答案()



因此,我们尝试从viewController更新标题视图,它解决了我们的问题。

您是否可以尝试在不使用DispatchQueue.main.async{}blockHi的情况下执行setupTitle_ViewWith(数组:array)刚刚尝试过。毫无疑问,为什么要在isReachable闭包上调用setupTitle_ViewWith()函数而不是successHandler?我希望你应该在下载成功后更新一次视图,对吗?有什么具体原因吗?我在successHandler上将dataModel保存到域中,然后在IsRecable闭包上从域中读取数据…哦,谢谢,所以调用函数似乎没有问题,好的,那么最后一次尝试是否可以尝试使用“DispatchQueue.main.sync”而不是async。是否可以尝试执行setupTitle_ViewWith(array:array)没有DispatchQueue.main.async{}blockHi,只是尝试了一下。毫无疑问,为什么要在isReachable闭包上调用setupTitle_ViewWith()函数而不是successHandler?我希望你应该在下载成功后更新一次视图,对吗?有什么具体原因吗?我在successHandler上将dataModel保存到域中,然后在IsRecable闭包上从域中读取数据…哦,谢谢,所以调用函数似乎没有问题,好的,那么最后一次尝试使用“DispatchQueue.main.sync”可以吗而不是异步。@Ian:谢谢你尝试了我所要求的一切:-)一起解决问题很好。@Ian:谢谢你尝试了我所要求的一切:-)一起解决问题很好。