→ whitefur:IB(interface builder, 也就是你說的"IDE")裡是可以設 03/13 09:25
→ whitefur:reuse identifier的, 你按cell就可以設了. 03/13 09:26
找到了,謝謝 Orz
→ whitefur:照裡說在IB裡是可以直接拉cell到table view controller上 03/13 09:28
→ whitefur:我也不知道為什麼你塞不進去 03/13 09:29
→ howdiun:cell可以塞進去的,你用力一點看看 03/13 09:39
本來以為我的問題解決了... Orz
我重開一個新的專案,在 storyboard 中都很順利
但如果我要求用 xib 檔,一切就不順利!!
在 xib 中塞入 table, table 看起來就不太一樣
要再塞 cell,也塞不進去
以"xib UITableViewCell" 搜尋找到解法了
http://iosmadesimple.blogspot.tw/2012/10/uitableviewcell-using-interface-builder.html
http://tinyurl.com/m7dy5zq
這裡以動態的方式載入 xib 檔(搜尋關鍵字 loadNibNamed)
原來一個 xib 檔可以有不只一個 top level 元件;反正它只是個 resource file
能開檔,搜尋,找出 UI 來畫就好
另外,我還沒很搞懂什麼是 controller
有 UIView, 也有 UIViewController
有 UITableView, 也有 UITableViewController
目前我只知道一個畫面要用一個 controller,然後其中可以塞滿元件
所以我從 view controller 寫起
→ atst2:你知道什麼是Model-View-Controller嗎? 03/13 16:38
幫你修
以前學過,但忘光了,在 wiki 中查了一下,總覺得那樣的文字不是很直覺
看來還是得在做中學
※ 編輯: HuangJC 來自: 60.251.197.63 (03/13 17:17)
※ 編輯: HuangJC 來自: 60.251.197.63 (03/13 17:30)
→ atst2:model-資料, controller-流程, view-使用者介面 03/13 17:38
→ atst2:這個pattern可以說是UI程式設計最重要的一環 03/13 17:39
→ atst2:我會建議任何要做程式的人, 都要弄清楚這一塊. 03/13 17:41
→ uranusjr:每個 framework 對 MVC 都有自己的想法, 而且常常衝突 03/13 18:32
→ uranusjr:其實要了解的是它的精神, 而不是解釋本身 (好像講得很玄) 03/13 18:34
→ HuangJC:我認同 uranusjr 的講法,所以這裡的 mvc 是什麼... 03/13 18:52
這樣說吧, 不管什麼架構,其實都是個建議
但有時 compiler 會有強制要求
就以微軟的 MFC/document view 架構來說好了
基本上 document 裡放資料, view 放展現函式
那麼不同的 view 去取用同一份資料,就可以有不同的展示
講得很清楚明白
但是把資料放在 view 裡面並不會寫不出來
切不漂亮也會動,切得漂亮可讀性高;但 compiler 不會插手'不準這樣寫'
尤其是 single view 根本看不出必要;等有許多不同的 view 都參考同一份資料時
自然會感覺把資料獨立出來的好處
那微軟的 document 是什麼呢? 或許是它有支援的 API
比如開檔存檔指令在這,如果你把資料放在 view 裡面,就有點怪
目前我對 controller 的用法就是,一堆 protocol 的 implement 放這
元件在 view did load 時動態擺好,要設一些 callback listener
那就集中在 controller 這裡吧
但不集中在這當然也寫得出來
比如繼承 UIView 寫的 MyView, 它本身當然也可以是擺放 protocol 本體的地方
不過最近開始理解到,有時根本不必繼承就可以寫出程式
只要擺放 UIView(應該舉 table view 為例),
然放設定好它一些 protocol callback (比如 data Source)就可以了
這是更抽象化的寫法,而既然沒有繼承,函式當然擺在 controller 就好
Compiler 並沒強制我把架構怎麼擺,分散在各個 class 一樣寫得出來
那什麼是它真的強制的呢?
所以我才會以為,一個畫面一定要有一個 controller
而 controller 內部有 view....
這是我的基本理解啦
※ 編輯: HuangJC 來自: 60.251.197.63 (03/13 19:25)
※ 編輯: HuangJC 來自: 60.251.197.63 (03/13 20:50)
推 Blueshiva:其實看了你最近在版上的發問和你自己的解釋,我覺得你把 03/13 22:50
→ Blueshiva:你以前在別地方的概念都先忘掉比較好...基本上,ObjC和 03/13 22:51
→ Blueshiva:Cocoa是很老,但是設計很先進的東西,照你老是想要把它 03/13 22:52
→ Blueshiva:的行為對應到別的東西上,只會阻礙自己的學習而已 03/13 22:52
→ HuangJC:這和爭論要不要把中文忘光再學英文很像啊... 03/13 22:56
→ HuangJC:當然對建議是謝謝,但以後被你發現我沒照做,又有膚衍的感 03/13 22:57
→ HuangJC:覺;還不如現在招了:我沒很優秀,也沒法子砍掉重練... 03/13 22:58
推 Piceman:要不要忘掉是還好,只要別強求這東西應該要這麼做才對就好 03/14 11:59
→ Piceman:例如中文是你好嗎,學英文就別問為什麼不是you good how 03/14 12:00
→ uranusjr:You don't need to forget Chinese to learn English, 03/14 12:02
→ uranusjr:but you must not speak English like Chinese. 03/14 12:02
謝謝,我只是怕不長進被發現後就不能再發問了
我也希望有一天可以當回答別人問題的人
以下純聊天:
當年學完 pascal 再學 c, 學長是說 '學pascal 是 c的基礎'
才學完幾年就有書支持我的想法,'c 可以直接學,不必先有別的基礎'
c 函式生而平等,全部 global
而 pascal 是副程式內有宣告區,宣告區內又可以宣告副程式,也就是天生巢狀結構
因此在學到 c++ 的 class 時,我就覺得 pascal 明明天生就有物件性質,
不必來個 pascal++ or object pascal
c 把函數,副程式合稱函式
pascal 則是函數一定要有傳回值,傳回值一定要被接
以上或許有記錯
(何況 pascal 演進後也會有 c 的特性,比如引進 precompiler
當年剛學 c 時,書上把 precompiler 說是 c 的特性,利用定義可以造成高度可攜性
那時我就覺得,precompiler 根本不必綁在任何語言上,它是獨立的工具啊)
但我要強調的是 當時有傳回值的函式,在 pascal 一定要被接
這時好玩了,有個學長明明自修先學了 c,但學校要他交 pascal 作業
於是他就 speak pacasl like c XD
比如
int sum = ADD(3,5); 假設 ADD 函式內有某些作用,而我也不在乎傳回值時
在 c 可以很自然的寫
ADD(3,5);
在 pascal 不可以不接傳回值,於是學長就寫
int nouse = ADD(3,5); (我忘了 pascal 語法,所以就講個意思就好)
nouse 就是要丟掉的意思
學長就大量使用函數,而不用副程式了
c 和 pascal 很像但不同
我看過有人寫 c 像 pascal,也看過有人寫 pascal 像 c XD
沒法子,當你腦袋沒轉過來,但你的環境(團隊或學校作業)有限制你工具時
那就這麼蠻幹了
-----------
回原題,在 storyboard 寫 table & cell 明明很簡單
為什麼我會碰到問題? 原來是因為我用 xib
為什麼我要用 xib? 因為團隊決定了啊
那我就去 google 出使用的方法....
但等都寫完了我才知道,它本來很簡單的,我繞了一大圈
※ 編輯: HuangJC 來自: 60.251.197.63 (03/14 13:45)
※ 編輯: HuangJC 來自: 60.251.197.63 (03/14 13:46)