Ios 延迟后将显示添加的子视图

Ios 延迟后将显示添加的子视图,ios,iphone,swift,uiview,subview,Ios,Iphone,Swift,Uiview,Subview,我有一个名为loadMainView()的函数,它是从viewDidLoad()调用的,如下所示 正如您所看到的,我在这个函数中所做的只是在“主视图”中添加一个名为“note”的子视图。代码工作正常,但子视图“note”在延迟10或15秒后显示在屏幕上 我试图添加一个print语句print(“subview added”),以查看是否需要一些时间才能到达该语句,但在loadMainView()函数中填充数据源时会调用print语句,并且print语句后添加的subview after prin

我有一个名为loadMainView()的函数,它是从viewDidLoad()调用的,如下所示

正如您所看到的,我在这个函数中所做的只是在“主视图”中添加一个名为“note”的子视图。代码工作正常,但子视图“note”在延迟10或15秒后显示在屏幕上

我试图添加一个print语句print(“subview added”),以查看是否需要一些时间才能到达该语句,但在loadMainView()函数中填充数据源时会调用print语句,并且print语句后添加的subview after print语句会在print语句后10或15秒后显示

我无法理解为什么我在显示子视图时会出现这种延迟


谢谢

因为它是异步任务,所以它在后台线程中执行,所有ui更新都必须在主线程中进行。因此,您必须在主线程中显式调用ui更新。试试下面的代码

dispatch_async(dispatch_get_main_queue()) {
     if (result == true) {
        let respData = response.objectForKey("data")
        self.notesDataList = respData! as! Array<Dictionary<String, AnyObject>>
        self.showExisting()
    }
}
dispatch\u async(dispatch\u get\u main\u queue()){
如果(结果==真){
让respData=response.objectForKey(“数据”)
self.notesDataList=respData!as!数组
self.showExisting()
}
}

您的完成处理程序可能在后台线程上被调用。您需要在主线程上进行任何UI更新。
func showExistingNotes() {


        let xPoint = 100
        var yPoint = 100

        let printNote = notesDataList[0]
        let noteText = printNote["noteText"] as! String
        let noteTextFont = printNote["noteTextFont"] as! String
        let noteTextFontSize = printNote["noteTextFontSize"] as! CGFloat
        let noteType = printNote["noteType"] as! String


        let dim = 40.0
        let note = WallNote(frame: CGRectMake(xPoint,yPoint,dim,dim), noteType:noteType, noteText: noteText, noteFont:noteTextFont, noteFontSize:noteTextFontSize, noteFontColor:kDefaultFontColor)
        note.wallnoteDelegate = self
        //print("subview added")
        self.masterView!.addSubview(note)

    }
dispatch_async(dispatch_get_main_queue()) {
     if (result == true) {
        let respData = response.objectForKey("data")
        self.notesDataList = respData! as! Array<Dictionary<String, AnyObject>>
        self.showExisting()
    }
}