如何在UITableView的末尾动态添加一个含UITextField的UITableViewCell?

2012-11-07 17:06:57 +08:00
 zhengwuzhou
想要实现的效果是:

有一个UITableView,每行内容都是text,

当点击工具栏上的“添加”按钮时,keyboard出现,同时UITableView滚动到最后一行,最后一行下一行增加一个UITableViewCell,该cell包含一个可以UITextField。

这个效果跟iPhone自带的“提醒事项”的效果相同,请问该如何实现呢?

多谢各位!
6598 次点击
所在节点    问与答
9 条回复
mmkkyang
2012-11-07 19:30:26 +08:00
用表视图实现的话可在点击添加按钮的情况下numberOfRowsInSection 返回值加1
cellForRowAtIndexPath中对最后row实例一个带有UITextField的Cell
UITextField成为第一响应者,滚动到最后一行可用scrollToRowAtIndexPath方法

不通过TableView实现的话可以在表视图上相应位置加一个UITextField视图
平时隐藏,点击添加按钮则滚动表视图,并显示UITextField

BTW,需要用到CoreData不?
zhengwuzhou
2012-11-07 22:15:57 +08:00
@mmkkyang numberOfRowsInSection是协议中的函数,请问如何在按钮点击事件中,改变numberOfRowsInSection的返回值呢?
zhengwuzhou
2012-11-07 22:20:49 +08:00
@mmkkyang 我没有用到CoreData,我用的是NSArray直接writeToFile,生成了plist文件。
alexrezit
2012-11-07 22:42:33 +08:00
你直接加在 footer 上面不行么... = =?
alexrezit
2012-11-07 22:52:56 +08:00
明白了.
添加行:
[self.tableView insertRowsAtIndexPaths:<#(NSArray *)#> withRowAnimation:<#(UITableViewRowAnimation)#>];
添加输入框:
[cell.contentView addSubview:_inputTextView];
滚动到最后一行:
NSInteger numberOfSections = self.tableView.numberOfSections;
NSInteger numberOfRows = [self.tableView numberOfRowsInSection:numberOfSections - 1];
[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:numberOfRows - 1 inSection:numberOfSections - 1] atScrollPosition:UITableViewScrollPositionBottom animated:YES];

虽然我很想损你一句: 读一下文档会死啊?
zhengwuzhou
2012-11-07 23:07:48 +08:00
@alexrezit 你按照你的方法试试看能不能实现!
alexrezit
2012-11-07 23:53:19 +08:00
@zhengwuzhou 细节上要处理的远远不止这些, 你自己写呗.
zhengwuzhou
2012-11-08 10:05:36 +08:00
@alexrezit insertRowsAtIndexPath压根不是答案
alexrezit
2012-11-08 11:05:27 +08:00
@zhengwuzhou 为什么不是?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/51997

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX