2016-04-03 10 views
5

Vorrei creare una super classe in un framework che modifichi le proprietà di IBOutlet. Tuttavia, vorrei che una sottoclasse fosse connessa allo storyboard, dal momento che non voglio collegare i controlli alla classe nel framework.Ignora le proprietà di IBOutlet dalla super classe?

Ad esempio, la classe eccellente nel mio quadro si presenta così:

public class MySuperDetailViewController: UIViewController { 

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

    ... 
} 

Poi nella sottoclasse, vorrei controllare-trascinare i controlli sulla sottoclasse. Quindi devo esporre quelle proprietà ignorando. Sto cercando di fare questo, ma non mi permetterò:

class MyDetailViewController: MySuperDetailViewController { 

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

} 

L'errore che ottengo è: Cannot override with a stored property 'titleLabel', 'dateLabel', and 'contentWebView'.

Come posso fare questo o un approccio migliore a questo?

risposta

8

Non tentare di ricreare le variabili nella sottoclasse; le variabili IBOutlet esistono ancora. Puoi ancora collegarli all'interno di Interface Builder in vari modi.

  1. Utilites (pannello di destra) -> Impostazioni di connessione - trascinare dall'elenco di IBOutlet.
  2. Document Outline (pannello di sinistra) - trascinate dal MyDetailViewController
  3. Trascinate dal cerchio giallo quando si ha l'UIViewController selezionato in Interface Builder

Nota: Tutti i UIViewController sottoclassi ereditano un IBOutlet nome view; questa proprietà esiste già in Interface Builder anche se non puoi fare clic + trascinare per connetterlo.