如何在uitableview 删除cellCell中创建uitableview 删除cell

iOS开发-UITableViewCell的创建方式 - 简书
下载简书移动应用
写了38101字,被30人关注,获得了29个喜欢
iOS开发-UITableViewCell的创建方式
这几天被这个基础控件搞的头疼
第一种方法: 纯手码(最土的方法)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *ID = @"cell";
// 根据标识去缓存池找cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 不写这句直接崩掉,找不到循环引用的cell
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
cell.textLabel.text = @"123";
第二种方法: 结合Storyboard
1、让tableViewController控制器的类型是我自己定义的SYTableController -&继承UITableViewConroller
Paste_Image.png
Paste_Image.png
Paste_Image.png
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *ID = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
indexPath 里面有两个参数
一个是cell的组
indexPath.section
另一个是cell的行
indexPath.row
Paste_Image.png
小Model演示不同的cell(同一个Storyboard)
1、先在Storyboard建立2个cell
Paste_Image.png
2、给cell绑定cell1/cell2标识
Paste_Image.png
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row % 2 == 0) { // 是偶数行加载----cell1
static NSString *ID = @"cell1";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 奇数行加载----cell2
static NSString *ID = @"cell2";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
1、封装一下,tableView返回cell的方法中就没有这么多代码了
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row % 2 == 0) { // 如果是偶数行加载----cell1
return [self cell1:tableView cellForRowAtIndexPath:indexPath];
// 如果是奇数行加载----cell2
return [self cell2:tableView cellForRowAtIndexPath:indexPath];
- (UITableViewCell *)cell1:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexpath{
static NSString *ID = @"cell1";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
- (UITableViewCell *)cell2:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexpath{
static NSString *ID = @"cell2";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
注意:实际开发中自定义cell肯定是不能这样封装的,因为数据不一样的
cell补充:
Paste_Image.png
custorm:自定义,可以随意往里面拖一些东西
被static修饰的成员变量,全局只有一份内存static的后面只可以放一个定值,这是在编译阶段就确定的
错误: static NSString *ID = indexPath.row % 2 == 0 ?@"cell1" : @"cell2";
正确: static NSString *ID = @"cell1";
cell里面其实有一个contentView,cell里面的控件都在这个里面
Paste_Image.png
- (UITableViewCell *)cell1WithTable:(UITableView *)tableView
static NSString *ID = @"cell1";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 苹果建议,如果给cell里面添加控件,直接调用cell.contentView
[cell.contentView addSubview:nil];
// 虽然我们可以在cell直接点出cell里面的控件,
// 其实这些点出来的控件的父控件都是cell.contentView
cell.imageView.superview = cell.contentView
使用ViewController往里面添加一个tableView也是可以的
Paste_Image.png
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:主题 : 请问,UITableViewCell中的imageView 如何设置位置?
级别: 新手上路
可可豆: 53 CB
威望: 13 点
在线时间: 43(时)
发自: Web Page
请问,UITableViewCell中的imageView 如何设置位置?&&&
cell 选择了&UITableViewCellStyleSubtitle
[cell.imageView setFrame:CGRectMake(100, 30, 320, 100)] &设置无效
请问,不自定义cell,能更改cell中imageView位置么?
级别: 新手上路
可可豆: 95 CB
威望: 95 点
在线时间: 54(时)
发自: Web Page
[cell.contentView addSubview newImageView]
级别: 新手上路
可可豆: 37 CB
威望: 36 点
在线时间: 117(时)
发自: Web Page
自定义UITableViewCell 并重写其中的 layoutSubviews方法
&
- (void) layoutSubviews
[super layoutSubviews];
self.imageView.frame = CGRectMake(100, 30, 320, 100 );
级别: 新手上路
可可豆: 17 CB
威望: 18 点
在线时间: 36(时)
发自: Web Page
此方法可以增加imageview,并且可以设置位置。由于tableviewcell的重用机制,要在增加imageview之前,先将它从contentView的子view中删除掉(通过tag来判断)
级别: 新手上路
可可豆: 17 CB
威望: 18 点
在线时间: 36(时)
发自: Web Page
1楼的方法也有效。
只是要将imageView置顶,不然看不到
[self.contentView bringSubviewToFront: self.imageView];
关注本帖(如果有新回复会站内信通知您)
个人IDP证书一年费用? 正确答案:99美金
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版UITableViewCell里面的各种控件如何互相引用和操作?
提主正在自学iOS,用的是swift 语言我想做这样两个功能:
1、点击一个UITableViewCell 中的UIButton,来改更这个cell 中的其它控件,比如label的text值。
2、UITableViewCell中有一个UITextField和一个UIButton,我在TextField中输入文字时怎么去改动UIButton中titleLabel的值。这两个功能我在Android都能顺利的实现,在Android中的做法很简答,直接在adapter的getView 方法中给控件添加响应的内部类监听就行了。而我在编写iOS UITableView 时发现在tableView(cellForRowAtIndexPath)这个方法里面,并不能像Android那样方便的添加监听,控件的点击或者文改更改观察(Observer)都是通过Selector来回调函数。但让我困扰的是,selector 似乎并不像Android里面的控件实现接口写监听那样,可以任意的传递参数或者作final 变量在内部类中引用。我尝试了一下”didButtonClick:”这个selector来调用func didButtonClick(btn:UIButton)这个函数,则出现unrecognized selector sent to instance 这个异常。而传入一个Int的话却又是可以找到selector的。我要怎样实现UITableViewCell 里面各种控件之间的互相操作呢?求各位老司机带路,如果您用Objective-C语言解答,我想我也应该是可以看得懂的。
按投票排序
对于第一个问题:UIButton的某个点击事件修改其Cell中其他控件比如Label的Text值如果不考虑自己魔改iOS默认提供的方法或者引入一些第三方框架,一般最直接的方法就是使用:@IBAction func doSomething(sender: AnyObject) {
myTextField.text = "Some Value"
一般这个Cell是一个自定义的Cell,持有Label或者TextField和Button的引用,如果是拖出来的,那么在对应的Cell的实现文件里绑定一个事件的Action就可以了,这是比较直接的方法了。如果不是拖出来的那么:override func awakeFromNib() {
super.awakeFromNib()
self.myButton.addTarget(self, action: "doAnything", forControlEvents: UIControlEvents.TouchUpInside)
func doAnything() {
myTextField.text = "Any Value"
对于第二个问题,TextField值修改后怎么去改动UIButton中titleLabel的值?TextFiled有UITextFieldTextDidChangeNotification通知,Cell初始化的时候注册通知:NSNotificationCenter.defaultCenter().addObserverForName(UITextFieldTextDidChangeNotification, object: self.myTextField, queue: NSOperationQueue.mainQueue()) { (NSNotification) -& Void in
self.myButton.setTitle("Changed", forState: UIControlState.Normal)
这种方法比较直观,有点像你提供的那个框架,也可以实现你要的效果。至于有没有其他的方法?当然有:见ReactiveCocoa大法
使用自定义类是最方便的做法
好吧,我自己先答一个。我找到了一个开源项目来实现像Android那样添加监听的方法。添加的是一个closure:在引入了ActionKit 这个开源项目后,似乎所有控件都可以使用这个方法
mBtn.addControlEvent(controlEvents: UIControlEvents, closure: &( ) -& ( )&)这个方法,将一个closure传入作为callback。很好奇iOS开发中为什么sdk里面没有直接提供这样方便的方法,是不是sdk中还有更好的解决方案呢?
你可以考虑试试Delegate手机不好打字,明天补充
想必你是自定义的cell吧,在自定义cell的控制器中,添加一个按钮响应事件就可以了吧。。
已有帐号?
无法登录?
社交帐号登录<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&UITableView 里不同UITableViewCell展现,如何设计
[问题点数:40分]
UITableView 里不同UITableViewCell展现,如何设计
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 uitableviewcell 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信