簡體   English   中英

UILabel沒有在Swift 2中更新

[英]UILabel not updating in Swift 2

我有一個問題,我正在從API解析一個字符串值,我正在嘗試將其分配給UILabel。 我已經通過使用以下格式將標簽(lblNamedata)設置為String來測試更新標簽與現在完全相同的位置:

self.lblNameData.text = "hello"

它工作得很好。

我目前有:

    if success {
        print("parse success!")

        print(strXMLData)

        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            self.lblNameData.text=self.strXMLData
        })

    } else {
        print("parse failure!")
    }

這不起作用。

以下是我當前的完整代碼:

import UIKit

class ViewController: UIViewController,NSXMLParserDelegate {

    var strXMLData:String = ""
    var currentElement:String = ""
    var passData:Bool=false
    var passName:Bool=false
    var parser = NSXMLParser()


    @IBOutlet weak var lblNameData: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        let url:String="http://www.stands4.com/services/v2/quotes.php?uid=idhere&tokenid=tokenhere&searchtype=xxxx&query=xxxx"

        let urlToSend: NSURL = NSURL(string: url)!
        // Parse the XML
        parser = NSXMLParser(contentsOfURL: urlToSend)!
        parser.delegate = self

        let success:Bool = parser.parse()

        if success {
            print("parse success!")

            print(strXMLData)

            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                self.lblNameData.text=self.strXMLData
            })

        } else {
            print("parse failure!")
        }
    }

    func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
        currentElement=elementName;
        if(elementName=="quote" || elementName=="author" || elementName=="result")
        {
            if(elementName=="quote"){
                passName=true;
            }
            passData=true;
        }
    }

   func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
        currentElement="";
        if(elementName=="quote" || elementName=="author" || elementName=="result")
        {
            if(elementName=="quote"){
                passName=false;
            }
            passData=false;
        }
    }

    func parser(parser: NSXMLParser, foundCharacters string: String) {
        if(passName){
            strXMLData=strXMLData+"\n\n"+string
        }

        if(passData)
        {
//          print(string)
            print("work")
        }
    }

    func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {
        NSLog("failure error: %@", parseError)
    }
}

更新:所以我相信我發現了錯誤:在我的解析器函數中我設置了strXMLData = strXMLData +“\\ n \\ n”+ string但是在刪除\\ n \\ n后我可以看到我的標簽更新了...為什么這是?

好吧,經過多次試驗和錯誤后,我想我找到了答案。

在我的Main.storyboard中出現了一些不喜歡我在UILabel中創建多行的東西,所以我所做的就是點擊標簽並導航到Attributes Inspector。 我將“Lines”參數設置為0,我能夠看到我的文字!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM