2016-04-03 17 views
5

Chciałbym utworzyć super klasy w ramach, która modyfikuje właściwości IBOutlet. Chciałbym jednak, aby podklasa była podłączona do storyboardu, ponieważ nie chcę łączyć elementów sterujących z klasą w ramach.Zastąp właściwości IBOutlet z super klasy?

Na przykład, super klasa w moim ramy wygląda następująco:

public class MySuperDetailViewController: UIViewController { 

    @IBOutlet public weak var titleLabel: UILabel? 
    @IBOutlet public weak var dateLabel: UILabel? 
    @IBOutlet public weak var contentWebView: UIWebView? 

    ... 
} 

Następnie w podklasie, chciałbym sterować przeciągnij kontrole na podklasy. Muszę więc ujawnić te właściwości przez nadpisanie. Staram się to zrobić, ale to nie pozwoli mi:

class MyDetailViewController: MySuperDetailViewController { 

    @IBOutlet weak var titleLabel: UILabel? 
    @IBOutlet weak var dateLabel: UILabel? 
    @IBOutlet weak var contentWebView: UIWebView? 

} 

Błąd pojawia się: Cannot override with a stored property 'titleLabel', 'dateLabel', and 'contentWebView'.

Jak mogę to zrobić lub poprawić?

Odpowiedz

8

Nie próbuj odtwarzać zmiennych w podklasie; zmienne IBOutlet nadal istnieją. Nadal można je łączyć wewnątrz Konstruktora interfejsu na wiele sposobów.

  1. Użycia (prawy panel) -> Inspektor połączenia - przeciągnij z listy IBOutletów.
  2. Document Outline (lewy panel) - przeciągnij z MyDetailViewController
  3. Drag z żółtym kółku, gdy masz zaznaczoną w konstruktorze Interface UIViewController

Uwaga: Wszystkie UIViewController podklasy odziedziczyć IBOutlet nazwie view; ta właściwość już istnieje w Kreatorze interfejsu, nawet jeśli nie można kliknąć + przeciągnij, aby ją połączyć.

Powiązane problemy