作者uranusjr (←這人是超級笨蛋)
看板MacDev
標題Re: [問題] NSWindow 有OnLoad Event嗎
時間Fri Aug 28 10:19:36 2009
※ 引述《jlovet (打不贏怪兵器不好)》之銘言:
1F:推 atst2:Cocoa程式起來時,會有好幾個點可以做一些附加操作. 08/28 01:12
2F:→ atst2:如果是跟GUI有關的,你可以試著在awakeFormNib裡去處理 08/28 01:13
3F:→ atst2:在呼叫到awakeFromNib時,你在IB內建構的元件都已被實體化, 08/28 01:14
4F:→ atst2:意即從這時候起你就可以存取UI物件而不用擔心是否存在 08/28 01:14
5F:→ atst2:細節的部分,可以參考別人的程式碼.看怎麼取得已生成的UI, 08/28 01:16
6F:→ atst2:以及如何建立,連結UI之間的動作. 08/28 01:16
7F:→ jlovet:不太懂,awakeFromNib是一個action還是...?我找不到 08/28 01:38
8F:→ jlovet:我想要依照檔案裡面定義的數量形式建立元件 08/28 01:38
9F:→ jlovet:成功了,awakeFromNib不能從什麼元件送出來,自己加就可以 08/28 02:49
10F:推 Blueshiva:其實awakeFromNib是要給系統呼叫的 :p 08/28 03:54
- (void)awakeFromNib 就是一個 method 沒錯
但它不是讓你主動呼叫的東西(Cocoa 裡面很多東西很被動, 這是其中之一)
和 delegate methods 的運作方式其實差不多(please correct me if I'm wrong)
當一個 Nib file 被開啟時, 它會把所有該 initialize 的東西初始化
接著再把 Interface Builder 裡的那些線拉好
因為這樣, 所以想在視窗一出現時就對 GUI 做設定
就不能在 NSWindow 物件的 -init 裡下指令
因為那時候 NSWindow 還不知道誰是它的 outlets, 不懂怎麼做
不過 Interface Builder 裡面的線被拉完後
Nib 裡的 loader 會送 -awakeFromNib 給所有它裡面的物件
所以如果把 GUI 相關的指令放在這裡, 就可以確定它們能被執行
所以你不會呼叫一個 object 的 awakeFromNib(although you probably can...XD)
而是會建立你的元件中的 awakeFromNib, 以讓應用程式在該呼叫它時自己呼叫
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.71.62.165
11F:推 jlovet:嗯,感覺delegate跟action跟windows的event差很多... 08/28 11:28
12F:→ jlovet:windows是指定event會作什麼事,但是cocoa是指定一個 08/28 11:29
13F:→ jlovet:delegate然後自動接收這些"全域"事件,對吧? 08/28 11:29
14F:→ uranusjr:前陣子有一串在討論 delegate 的, zonble 跟 offman 都解 08/28 12:49
15F:→ uranusjr:釋得很好 08/28 12:49
16F:推 Blueshiva:是offname(關名字)不是offman(關男人)喔 :D 08/28 13:09
17F:→ uranusjr:囧 08/28 15:02
18F:推 offname:囧 09/01 18:28
19F:推 leondemon:XD 09/02 02:37