[問題] 怎麼寫 table view

看板MacDev作者 (吹笛牧童)時間11年前 (2014/03/13 02:59), 編輯推噓2(2021)
留言23則, 7人參與, 最新討論串1/1
網路上查到的範例,是從 table view controller 寫起的 這樣可以讓 table view, table view cell 先擺好 而我必需從 UIViewController 開始寫 不能使用 table view controller 目前我是用繼承改寫的方式,寫一個 my table view cell https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7 http://tinyurl.com/pabdxxy 文件中說除了用繼承的寫法,還有別的方法 似乎別的方法就可以直接用 storyboard 來畫了,不用自己 hardcode 算座標 在 list 5-3 下的說明 The string identifier you assign to the prototype cell is the same string you pass to the table view in dequeueReusableCellWithIdentifier: 這裡好像是說,可以直接在 storyboard 裡打 Identifier 也可以直接 layout 一個 table view cell 但我實在找不到在哪裡打 因為我的畫面只有在 root View 裡,塞入一個 table view 並沒有 table view controller 這樣的東西 還是說,我直接拉一個 table view cell 放在 table view 的裡面? 嗯,塞不進去 所以我只好用繼承改寫 table view cell,並且 hard code 內部元件的方法寫了 有簡單點的方法嗎? 謝謝 -- 活動/美食計劃 蘭嶼 魚白 勝興車站 星月天空 武陵 草嶺古道 嘉義阿里山小火車 保齡球  司馬庫斯 手包水餃 日月潭纜車 合歡攻頂 馬祖 鹽山 南庄 澎湖 溪頭/松林町 南投天梯 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.197.63 ※ 編輯: HuangJC 來自: 60.251.197.63 (03/13 03:28)

03/13 09:25, , 1F
IB(interface builder, 也就是你說的"IDE")裡是可以設
03/13 09:25, 1F

03/13 09:26, , 2F
reuse identifier的, 你按cell就可以設了.
03/13 09:26, 2F
找到了,謝謝 Orz

03/13 09:28, , 3F
照裡說在IB裡是可以直接拉cell到table view controller上
03/13 09:28, 3F

03/13 09:29, , 4F
我也不知道為什麼你塞不進去
03/13 09:29, 4F

03/13 09:39, , 5F
cell可以塞進去的,你用力一點看看
03/13 09:39, 5F
本來以為我的問題解決了... 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 寫起

03/13 16:38, , 6F
你知道什麼是Model-View-Controller嗎?
03/13 16:38, 6F
幫你修 以前學過,但忘光了,在 wiki 中查了一下,總覺得那樣的文字不是很直覺 看來還是得在做中學 ※ 編輯: HuangJC 來自: 60.251.197.63 (03/13 17:17) ※ 編輯: HuangJC 來自: 60.251.197.63 (03/13 17:30)

03/13 17:38, , 7F
model-資料, controller-流程, view-使用者介面
03/13 17:38, 7F

03/13 17:39, , 8F
這個pattern可以說是UI程式設計最重要的一環
03/13 17:39, 8F

03/13 17:41, , 9F
我會建議任何要做程式的人, 都要弄清楚這一塊.
03/13 17:41, 9F

03/13 18:32, , 10F
每個 framework 對 MVC 都有自己的想法, 而且常常衝突
03/13 18:32, 10F

03/13 18:34, , 11F
其實要了解的是它的精神, 而不是解釋本身 (好像講得很玄)
03/13 18:34, 11F

03/13 18:52, , 12F
我認同 uranusjr 的講法,所以這裡的 mvc 是什麼...
03/13 18:52, 12F
這樣說吧, 不管什麼架構,其實都是個建議 但有時 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)

03/13 22:50, , 13F
其實看了你最近在版上的發問和你自己的解釋,我覺得你把
03/13 22:50, 13F

03/13 22:51, , 14F
你以前在別地方的概念都先忘掉比較好...基本上,ObjC和
03/13 22:51, 14F

03/13 22:52, , 15F
Cocoa是很老,但是設計很先進的東西,照你老是想要把它
03/13 22:52, 15F

03/13 22:52, , 16F
的行為對應到別的東西上,只會阻礙自己的學習而已
03/13 22:52, 16F

03/13 22:56, , 17F
這和爭論要不要把中文忘光再學英文很像啊...
03/13 22:56, 17F

03/13 22:57, , 18F
當然對建議是謝謝,但以後被你發現我沒照做,又有膚衍的感
03/13 22:57, 18F

03/13 22:58, , 19F
覺;還不如現在招了:我沒很優秀,也沒法子砍掉重練...
03/13 22:58, 19F

03/14 11:59, , 20F
要不要忘掉是還好,只要別強求這東西應該要這麼做才對就好
03/14 11:59, 20F

03/14 12:00, , 21F
例如中文是你好嗎,學英文就別問為什麼不是you good how
03/14 12:00, 21F

03/14 12:02, , 22F
You don't need to forget Chinese to learn English,
03/14 12:02, 22F

03/14 12:02, , 23F
but you must not speak English like Chinese.
03/14 12:02, 23F
謝謝,我只是怕不長進被發現後就不能再發問了 我也希望有一天可以當回答別人問題的人 以下純聊天: 當年學完 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)
文章代碼(AID): #1J8AvqjO (MacDev)
文章代碼(AID): #1J8AvqjO (MacDev)