我是一个相当新的 IOS 开发人员 - 总的来说一切都很顺利,除了.....
我有一个保存代码列表的程序。我可以点击“+”来添加新代码,新视图会调用 Web 服务来验证数据,如果有效则将其添加到内部 sqlite 数据库中。到现在为止还挺好。
在进入应用程序时,数据视图会使用数据库中的所有代码进行更新。又好。如果用户选择其中一个代码,则应该发生的是;
调用另一个服务以从数据库中获取详细数据(如果有兴趣,可以使用 SQL 服务器)。将此数据放入初始化表中。在另一个视图中显示数据。
我正在做的代码如下;
在第一个窗口的 prepareForSegue 中,我得到了我需要的代码并将其放入第二个视图实例中。我清理并准备数据库,然后退出 prepareForeSeque。以上所有方法都有效!
然后调用第二个视图控制器上的 viewDidLoad。
它获取传入的变量,构造服务请求并调用服务。然后它退出,然后另一个数据视图调用 numberOfRowsInSection - 它返回零,因为尚未调用来自处理 XML 数据并将其推入数据库的服务的回调!
我确实尝试过制作一个信号量变量,并在它处理完数据后将其设置在服务回调中。然后在 viewDidLoad 我旋转等待这个变量被设置。我使用 [NSSthread sleepForTimeInterval:0.25] 旋转,但怀疑我正在阻止调用服务回调。
我相信我可以通过在主视图和子视图之间放置一个中间视图来“作弊” - 并手动将 segue 发送到子视图 - 但怀疑这是一种矫枉过正!
斯坦