作者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