2017-05-22 2 views
0

Ich versuche eine Erweiterung für alle UIButton-Unterklassen zu machen, die es mir erlauben, einen Schlüssel in den Xcode UIBuilder einzugeben, und diesen Schlüssel automatisch in die richtige Sprache zu ändern Bauzeit.UIButton mit @IBinspectable für die Lokalisierung in Swift/Xcode

Es funktioniert gut, wenn ich die App ausführen, aber das Schlüsselwort, das ich in den Builder eintippe, ist nicht in der Benutzeroberfläche lokalisiert.

Ich habe versucht, #if Builder-Anweisungen und PrepareForInterfaceBuilder(). Das ist, was ich bisher habe:

extension UIButton { 
@IBInspectable var localizedText: String { 
    set (key) { 
     self.setTitle(key.localized, for: .normal) 
    } 
    get { 
     return (self.titleLabel?.text)! 
    } 
    } 
} 

und

class Button: UIButton { 
. 
. 
. 
override func prepareForInterfaceBuilder() { 
     super.prepareForInterfaceBuilder() 
     self.titleLabel?.text = localizedText 
    } 
} 

Jede mögliche Hilfe würde geschätzt!

Antwort

0

Mit dieser Erweiterung ...

extension UIButton { 
    @IBInspectable var localizedTitle: String { 
     get { return "" } 
     set { 
      self.setTitle(newValue.localized, for: .normal) 
     } 
    } 
} 

extension String { 
    var localized: String { 
     get { return NSLocalizedString(self, comment: "") } 
    } 
} 
+0

ich vergaß zu sagen .localized ist ein String-Erweiterung, die NSLocalizedString auf sich selbst aufruft und gibt das Ergebnis. Der einzige Unterschied zwischen unserem Code ist, dass Sie "" zurückgeben und Sie newValue als Variable verwenden. Ich versuche, den im Builder festgelegten Wert als newValue zu verwenden. –

+0

Also funktioniert deine String Extension hier nicht ??? Weil ich dieses benutzt habe, funktioniert es bis jetzt für mich .. – Bilal

+0

Ich habe die Antwort mit Zeichenkettenverlängerung aktualisiert ... Ich prüfte es auch, bevor es bekanntgab ... – Bilal

Verwandte Themen