2016-03-18 5 views
6

Мне было интересно, как создать пользовательский класс для элемента пользовательского интерфейса (скажем, например, кнопку)?Пользовательский класс UIButton swift

Я читал документы по разработке Apple, и я следовал инструкциям, я думал, что должен создать отдельный файл класса UIButton и связать этот файл класса для всех кнопок на раскадровке.

Вот код отдельного класса UIButton (файл с именем buttonz.swift):

import UIKit 

public class buttonz: UIButton { 


    required public init?(coder aDecoder: NSCoder) { 

     super.init(coder: aDecoder) 

     self.layer.borderWidth = 1 
     self.backgroundColor = UIColor.whiteColor() 
     self.layer.borderColor = UIColor.blackColor().CGColor 

    } 

} 

И на раскадровке я связывал эту конкретную кнопку для нового класса UIButton:

enter image description here

Проблема в том, что когда я запускаю симулятор, это дает мне ошибку в консоли debig:

этот класс не является значением ключа кодирования совместимый для ключа aButton

Я думал, что этот процесс был прост в руководстве, но мне не хватает каких-либо дополнительных шагов? Пожалуйста дайте мне знать, спасибо!

Для справки, вот ссылка на документы Apple, которые я использовал в качестве руководства.

https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson5.html

Edit 1 - Вот ссылка действие на viewcontroller.swift для контроллера представления. Я просто ctrl + перетащил кнопку из панели рассказов в viewcontroller.swift.

@IBAction func a(sender: AnyObject) { 
     var alertView = UIAlertView(); 
     alertView.addButtonWithTitle("Ok"); 
     alertView.title = "title"; 
     alertView.message = "message"; 
     alertView.show(); 
    } 
+0

Вы пробовали подключения выхода к классу в Interface Builder и назвал его 'aButton', однако класс вы пытались подключить его, чтобы не иметь этого свойства. – nhgrif

+0

Вы также создали пользовательский класс контроллера с свойством 'aButton'? я думаю, вам нужно будет установить класс контроллера просмотра. – nielsbot

+0

попытайтесь удалить модификатор 'public'. –

ответ

3

Ваш код выглядит нормально, я думаю, что это ошибка соединения. Откройте файл раскадровки, выберите File's Owner (или желтый круг сверху контроллера) и нажмите «Инспектор подключения» (стрелка в правом верхнем углу, которая находится рядом с инспектором размера), чтобы увидеть все выходы однажды. Ищите ! s, который указывает на отсутствие выхода.

Если вы создаете пользовательские UIClasses, я бы предложил посмотреть на IBInspectable s и IBDesignable s, есть много о них и вы сможете сделать довольно много всего через раскадровки, и это не изменит ваш код так много.

Некоторые статьи:

IBInspectable/IBDesignable - NSHipster

Creating a Custom View That Renders in Interface Builder - Apple

Наслаждайтесь :)

+0

Итак, я сделал crtl + перетаскивание той же кнопки в код viewcontroller как выход, и казалось, что после обнаружения того, что aButton не хватает выхода, спасибо! – rj2700

+0

Блестящий! Удачи со всем этим. Посмотрите на IBDesignables, они довольно крутые. – MrHaze

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