[問題] 怎麼寫 table view
網路上查到的範例,是從 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
03/13 09:25, 1F
→
03/13 09:26, , 2F
03/13 09:26, 2F
找到了,謝謝 Orz
→
03/13 09:28, , 3F
03/13 09:28, 3F
→
03/13 09:29, , 4F
03/13 09:29, 4F
→
03/13 09:39, , 5F
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
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
03/13 17:38, 7F
→
03/13 17:39, , 8F
03/13 17:39, 8F
→
03/13 17:41, , 9F
03/13 17:41, 9F
→
03/13 18:32, , 10F
03/13 18:32, 10F
→
03/13 18:34, , 11F
03/13 18:34, 11F
→
03/13 18:52, , 12F
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
03/13 22:51, 14F
→
03/13 22:52, , 15F
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
03/14 12:00, 21F
→
03/14 12:02, , 22F
03/14 12:02, 22F
→
03/14 12:02, , 23F
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)
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章