作者mick99988 (高雄人)
看板MacDev
标题[问题] 如何取得text的值在tableview cell里?
时间Mon Jun 19 15:59:21 2017
目前被这个问题卡了三天了...
我是用tableview cell内有放textfield给人输入
但我的是dynamic cell会有2个section各有16个cell rows
要如何在按下Save纽时抓取全部的text值存进字典後,在上传至firebase database?
目前找到的方法都会跳出error说有unwraping nil
查看後发现在再第11个cell必定crash...
@IBAction func SaveBtn(_sender: UIBarButtonItem)
{
var dic:[String:String] = [:]
for (i,bit) in BitArray.enumerated()
{
let cell = tableview.cellForRow(at:IndexPath(row: i,section: 0)) as!
LabelNameTableCell
dict[bit] = cell.txtName?.text ?? ""
print(dict[bit])
}
....省略是WordArray
}
类似像iphone内的设定 都会有可以让人在做输入的功能
看起来很简单,实际要做才知道不是自己想像那样...Orz
有人能提点小弟吗 谢谢
mac版PPT不能复制贴上只好一个字一个字打...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.105.41.86
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1497859163.A.5D8.html
1F:→ LFimi: 你画面只显示的出10个cell 所以抓不到第11个 06/19 16:58
2F:→ LFimi: 可以在textFieldDidEndEditing就先把txtName存下来 06/19 17:00
3F:→ G888888: 看起来像没出现在画面上的cell已经不见了 06/19 17:52
4F:→ mick99988: 你好 能在详细说明一下吗? 刚入门...本来以为设定上 06/19 18:03
5F:→ mick99988: 的textfield很简单... 06/19 18:03
6F:→ mick99988: 好像确实像你说的当我滑下去 第0个就不见然後就crash了 06/19 18:06
7F:→ mick99988: .. 06/19 18:06
8F:推 coastq46833: 一楼是指每填完一笔就会把资料记起来,textfieldDidE 06/19 19:48
9F:→ coastq46833: ndEditing 可以告速你某个textfield资料填好了 06/19 19:48
10F:→ mick99988: 这麽说好了 我会有32格cell 但并不是每格都需要填,是 06/19 20:54
11F:→ mick99988: 随使用者高兴,如果没填就是"" 这样的设定会有问题吗 06/19 20:54
12F:→ mick99988: 还是说要做成static? 06/19 20:54
13F:推 yoshilin: ios的tableView只保留显示中的cell,值要另存在model 06/20 05:05
14F:→ xpop777: 你要存的东西是 model,textfield 是 View,要先切开来 06/20 12:53
15F:→ mick99988: 这边还不是很懂... 版上有关键字吗? 我查中文大多都只 06/20 13:47
16F:→ mick99988: 教UItableviewController.. 06/20 13:47
17F:推 otaku5566: 1.实作UITextFieldDelegate的protocol函式textFieldDid 06/20 20:22
18F:→ otaku5566: EndEditing 06/20 20:22
19F:→ otaku5566: 当你有设好delegate的UITextField结束编辑时会触发此式 06/20 20:24
20F:→ otaku5566: 2. 把捞到的栏位值存进字典档 06/20 20:26
22F:推 otaku5566: tableView小细节其实满多,建议先拉16个TextField练习 06/20 20:34
23F:→ mick99988: 好的 我先研究先 06/20 23:35
24F:推 LFimi: 你要先理解table cell的reuse概念 06/21 14:23
25F:→ LFimi: 就算你的table有100个cell, 但是画面中只看得到10个 06/21 14:23
26F:→ LFimi: 那实际存在的cell就只有大约10~12个 06/21 14:24
27F:→ LFimi: 每次移动画面,就会拿移出画面的cell重新当作移到画面的cell 06/21 14:25
28F:→ LFimi: 所以你存资料不能在最後才一次拿全部的cell去读资料 06/21 14:26
29F:→ LFimi: 所以只能在cell的textField的资料一改变就立刻存下来 06/21 14:27