无法找到接受提供的参数SWIFT的“init”的重载

时间:2014-10-22 16:02:04

标签: ios xcode swift

我使用了这段代码

    self.navigationController?.navigationBar.titleTextAttributes =
        [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 20),
        NSForegroundColorAttributeName: UIColor.whiteColor()]

我收到错误"无法找到接受所提供参数的“init”的重载"

3 个答案:

答案 0 :(得分:14)

UIFont(name:size:)现在是一个可用的初始化程序 - 如果它无法找回返回值,它将无法找到该字体并使您的应用崩溃,它将返回nil 。使用此代码安全地获取字体并使用它:

if let font = UIFont(name: "HelveticaNeue-Light", size: 20) {
    self.navigationController?.navigationBar.titleTextAttributes = 
            [NSFontAttributeName: font, 
             NSForegroundColorAttributeName: UIColor.whiteColor()]
}

答案 1 :(得分:0)

使用此

self.navigationController?.navigationBar.titleTextAttributes =
        [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 20)!,
        NSForegroundColorAttributeName: UIColor.whiteColor()!]

或者这个

if let font = UIFont(name:"HelveticaNeue-Light", size: 20.0) {
    self.navigationController?.navigationBar.titleTextAttributes  = [NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName: font]
}

答案 2 :(得分:0)

另一种方法是在设置titleTextAttributes之前建立字典。这只是为了避免使用其他方法,如果您想使用可用的初始化程序设置更多参数,这将更有用。例如:

var attributes : [NSObject : AnyObject] = [NSForegroundColorAttributeName : UIColor.whiteColor()]

if let font = UIFont(name: "Helvetica", size: 20) {
    attributes[NSFontAttributeName] = font
}

if let someData = NSData(contentsOfFile: "dataPath") {
    attributes["imageData"] = someData
}

self.myObject.attributes = attributes