Mi rendo conto di essere un po 'in ritardo, ma la mia soluzione a questo problema era di assicurare che la classe con cui il builder dell'interfaccia stava "trascinando" fosse la stessa della classe in cui si trovava: in altre parole, tutto deve essere nella stessa classe.
Ad esempio, se ho classi A
e B
e uno storyboard: dovrei assicurarmi che lo storyboard sia impostato su una classe. Se lo impostassi su A
, collegherebbe solo gli elementi alla classe A
, se imposto la classe su B
, provando a connettere elementi alla classe A
avresti una riga blu ma nessuna Insert Outlet or Action
o Connect Outlet/Action
.
Una rappresentazione visiva:
ViewController.swift:
import Cocoa
class FirstClass: NSViewController {
// some code here
}
class SecondClass: NSViewController {
// some more code here
}
Qui abbiamo dichiarato due classi, FirstClass
e SecondClass
. Se guardi lo storyboard vuoto ( Main.storyboard
per lo scopo di questa risposta), dovresti vedere qualcosa di simile al seguente:
OrafaiclicsullafinestrasottoilViewController(vuotosuunnuovoprogetto)eselezionalaschedacheassomigliaunpo'aungiornalenell'Inspector.
Dovrestivederelaclassepredefinita(ViewController)formattatacomestringasegnapostonelcampoditestoper"Class". Il tentativo di Controllo + Trascinamento non ti consentirà di creare un'istanza di qualsiasi elemento che stai tentando di aggiungere a FirstClass
o SecondClass
, ma consentilo solo per la classe specificata, ViewController
(per qualche motivo non riesco a salvarlo)
Per aggiungere un elemento a FirstClass
, cambia il testo nel campo Classe in FirstClass
(con qualsiasi completamento automatico della fortuna dovrebbe terminarlo per te):
Ora, Control + Il trascinamento di un elemento da Interface Builder su FirstClass
dovrebbe funzionare, ma non si applica a SecondClass
. Cambia il nome della classe personalizzata in qualsiasi classe si adatti alle tue esigenze.