2014-10-22 6 views
6

Я использовал этот кодНе удалось найти перегрузку «INIT», который принимает переданные аргументы СВИФТ

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

, и я получаю сообщение об ошибке «Не удалось найти перегрузку„INIT“, который принимает переданные аргументы "

+0

Немного другой вопрос, но, по сути та же самая проблема: http://stackoverflow.com/questions/26499815/nsfontattributedstring-worked-before-xcode-6-1/26500637#26500637 –

ответ

14

UIFont(name:size:) В настоящее время неудачный инициализатор - он вернет nil, если он не сможет найти этот шрифт и отключить ваше приложение, если вы разворачиваете возвращаемое значение. Используйте этот код, чтобы безопасно получить шрифт и использовать его:

if let font = UIFont(name: "HelveticaNeue-Light", size: 20) { 
    self.navigationController?.navigationBar.titleTextAttributes = 
      [NSFontAttributeName: font, 
      NSForegroundColorAttributeName: UIColor.whiteColor()] 
} 
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] 
} 
+0

смотрите отредактированный ответ – ZAZ

+0

Вам не нужно '!' После 'UIcolor.whiteColor()', поскольку он не возвращает необязательный. Фактически, использование этого даст вам ошибку компилятора. – chrysAllwood

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 
Смежные вопросы

 Смежные вопросы