2017-02-21 137 views
0

我正在嘗試使用PKHUD創建自定義視圖,以便在API調用失敗時,我可以向用戶顯示一條消息以及一個按鈕以尋求幫助。在swift中使用PKHUD創建自定義視圖3

這裏是我的類文件:

import UIKit 
import PKHUD 

class PKHUDHelpDeskView: PKHUDWideBaseView { 

    private func callNumber(phoneNumber:String) { 
     if let phoneCallURL = URL(string: "tel:\(phoneNumber)") { 
      let application:UIApplication = UIApplication.shared 
      if (application.canOpenURL(phoneCallURL)) { 
       if #available(iOS 10.0, *) { 
        application.open(phoneCallURL, options: [:], completionHandler: nil) 
       } else { 
        // Fallback on earlier versions 
       } 
      } 
     } 
    } 

    @IBAction func helpDeskNumberButton(_ sender: Any) { 
     callNumber(phoneNumber: "8005551234") 
    } 
} 

這是我如何我稱之爲:

PKHUD.sharedHUD.contentView = PKHUDHelpDeskView() 
PKHUD.sharedHUD.show() 
PKHUD.sharedHUD.hide(afterDelay: 4.0) 

我在故事板上設置了一個視圖(設置爲PKHUDHelpDeskView類)與按鈕和顯示消息的文本字段。當我運行這個時,PKHUD顯示沒有文字。類文件和故事板已正確連接,因此需要做些什麼來使文本顯示在PKHUD中?

回答

1

我試着做同樣的事情。我沒有添加UILabelUIButton使用故事板(我相信你在這裏指的是.xib),我用編程方式添加它們。以下是我的最終代碼。請嘗試一下

import PKHUD 

class PKHUDHelpDeskView: PKHUDWideBaseView { 

    let button: UIButton = UIButton(type: UIButtonType.custom) 
    let label: UILabel = UILabel() 

    override func didMoveToSuperview() { 
     super.didMoveToSuperview() 

     button.setTitle("Call", for: UIControlState.normal) 
     button.backgroundColor = UIColor.red 
     button.addTarget(self, action: #selector(self.helpDeskNumberButton(_:)), for: UIControlEvents.touchUpInside) 

     label.text = "Call me now" 
     label.textColor = UIColor.brown 
     label.font = UIFont.systemFont(ofSize: 16) 
     label.textAlignment = NSTextAlignment.center 

     self.addSubview(label) 
     self.addSubview(button) 
    } 

    override func layoutSubviews() { 
     super.layoutSubviews() 

     self.button.frame = CGRect(x: 0, y: 0, width: self.frame.size.width/2, height: 30.0) 
     self.label.frame = CGRect(x: 0, y: 30.0, width: self.frame.size.width, height: 40.0) 
    } 

    private func callNumber(phoneNumber:String) { 
     if let phoneCallURL = URL(string: "tel:\(phoneNumber)") { 
      let application:UIApplication = UIApplication.shared 
      if (application.canOpenURL(phoneCallURL)) { 
       if #available(iOS 10.0, *) { 
        application.open(phoneCallURL, options: [:], completionHandler: nil) 
       } else { 
        // Fallback on earlier versions 
       } 
      } 
     } 
    } 

    func helpDeskNumberButton(_ sender: Any) { 
     callNumber(phoneNumber: "8005551234") 
    } 
} 
+0

謝謝!我不確定它爲什麼以編程方式工作,而不是在故事板中,但對我來說沒問題。我已經格式化了文本和按鈕,並且正是我所需要的,但按鈕不起作用。在阻止我能夠按下按鈕的所有東西上都有一個視圖。 [見這裏...](http://imgur.com/A4eF9ZA)。有任何想法嗎? – Anonymoose