`
jsntghf
  • 浏览: 2534013 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

UITableView中cell底端的定位问题

    博客分类:
  • iOS
阅读更多

在UITableView中有一个UILabel,需要处于cell的底端,也就是最后一条cell的下方,但是cell的数量是不定的,也就是说列表可能长,可能短,那么该UILabel应该如何实现定位?

 

可能你最初会想到下面的这种方法。

 

- (NSInteger)tableView:(UITableView *)tableView 
 numberOfRowsInSection:(NSInteger)section
{
    NSString *key = [keys objectAtIndex:section];
    NSArray *nameSection = [names objectForKey:key];
    return [nameSection count] + 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger section = [indexPath section];
    NSUInteger row = [indexPath row];
    
    NSString *key = [keys objectAtIndex:section];
    NSArray *nameSection = [names objectForKey:key];
    
    static NSString *SectionsTableIdentifier = @"SectionsTableIdentifier";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
                             SectionsTableIdentifier ];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                       reuseIdentifier: SectionsTableIdentifier ] autorelease];
    }
    if (row == [nameSection count]){
		NSString *str = [[NSString alloc] initWithFormat:@"%@ END", key];
		cell.textLabel.text = str;
	} else {
		cell.textLabel.text = [nameSection objectAtIndex:row];
	}
	return cell;
}

 

其实,有种最简单的方法,只需要实现UITableViewDelegate中的- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;即可。

 

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
	NSString *key = [keys objectAtIndex:section];
	NSString *str = [[NSString alloc] initWithFormat:@"%@ END", key];
	UILabel *label = [[[UILabel alloc] init] autorelease];
	[label setText:str];
	[label setTextColor:[UIColor redColor]];
	[label setTextAlignment:UITextAlignmentCenter];
	return label;
}

 

这样,上面的两个方法即可改回原来的实现:

 

- (NSInteger)tableView:(UITableView *)tableView 
 numberOfRowsInSection:(NSInteger)section
{
    NSString *key = [keys objectAtIndex:section];
    NSArray *nameSection = [names objectForKey:key];
    return [nameSection count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger section = [indexPath section];
    NSUInteger row = [indexPath row];
    
    NSString *key = [keys objectAtIndex:section];
    NSArray *nameSection = [names objectForKey:key];
    
    static NSString *SectionsTableIdentifier = @"SectionsTableIdentifier";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
                             SectionsTableIdentifier ];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                       reuseIdentifier: SectionsTableIdentifier ] autorelease];
    }
	cell.textLabel.text = [nameSection objectAtIndex:row];
	return cell;
}
分享到:
评论

相关推荐

    swift中UITableView自定义cell添加与删除及表的刷新wift中UITableView自定义cell添加与删除及表的刷新

    3. 通过 storyboard 或代码注册这个自定义Cell类到UITableView,确保在`viewDidLoad()`中调用`tableView.register(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "CustomCell")`或`...

    UItableView多cell实现

    这个话题主要探讨如何优雅地处理UITableView中显示多种不同样式的cell,以避免代码过于分散和冗余,提高代码的可维护性。 首先,描述中提到的“多cell”指的是UITableView中包含多种不同设计或功能的单元格。在实际...

    UITableView在两个Cell中间显示目录效果

    本教程将探讨如何在UITableView中实现一个特殊效果:在两个Cell之间显示目录,并且点击某一项时,菜单会在该项下方展开,不会遮挡下一行的内容。这个功能在许多应用中都非常实用,比如设置界面或者有层级结构的数据...

    UITableView 删除单元格Cell Demo代码

    在实际应用中,我们经常需要实现对UITableView中的单元格(Cell)进行删除操作。本Demo代码着重展示了如何在UITableView中删除Cell,让我们来详细探讨这个过程。 首先,为了删除单元格,我们需要遵循...

    ios-UITableView 相邻cell交换简单动画.zip

    7. **处理可能的bug**:在实际开发中,可能会遇到一些问题,比如cell重叠、动画卡顿等。因此,项目中提供的bug修复部分是关键,它可能包括优化性能、处理边界条件和异常情况等。 通过这个项目,开发者不仅可以学习...

    UITableView使用自定义cell的例子

    在`TableViewTest`项目中,你可以找到完整的代码实现,包括自定义cell的创建、数据模型的定义以及UITableView的设置。通过这个例子,你将了解到如何在实际开发中结合MVC架构和KVO来高效地处理UITableView的数据绑定...

    UITableView自定义Cell-SB.zip

    接着,你可以从Object Library拖拽控件到Cell中,如UILabel、UIImageView等,调整他们的位置和大小。 3. **连接IBOutlet和IBAction**:使用Assistant Editor,将Storyboard中的控件与代码中的IBOutlets和IBActions...

    UITableview的cell自适应高度

    1. 首先,确保你的Cell中所有的子视图都已经设置了约束。每个子视图应该有四个约束(上、下、左、右),并且内容视图的约束应该与Cell的contentView相关联。这样,子视图的大小会根据它们的内容自动调整。 2. 在...

    swift-长按即可移动cell的UITableView

    在这个特定的场景中,我们讨论的是如何实现一个"长按即可移动cell的UITableView"功能,这通常涉及到手势识别、自定义行为以及对UITableView的深入理解。 首先,我们要引入`UILongPressGestureRecognizer`手势识别器...

    ios-UITableView的cell移动位置.zip

    这个场景在"ios-UITableView的cell移动位置.zip"的示例中得到了体现。在描述中提到,当用户拖动cell后,再次进入界面时,cell仍保持在拖动后的位置,这涉及到UITableView的数据源管理以及状态保存。 首先,我们要...

    iOS+折叠文本+UITableView文本cell折叠

    这个功能允许在UITableView的Cell中显示大量的文本内容,而不会占用过多的屏幕空间。当用户点击Cell时,文本可以展开或折叠,以显示或隐藏详细信息。以下我们将详细探讨实现这一功能的关键知识点。 首先,我们需要...

    iphone开发--UITableView中的cell高度不一致解决方案

    在实际开发过程中,我们可能会遇到一个常见的问题:UITableView中的cell高度不一致,这会影响用户界面的美观性和用户体验。本文将深入探讨这个问题,并提供解决方案。 首先,我们要理解为什么会出现cell高度不一致...

    UITableView 的缩放和展开

    你可以通过添加一个额外的标识符来跟踪每个cell的状态,并在`cellForRowAt`方法中根据这个状态决定是否显示子视图(如新的UITableView)。 2. **代理和数据源**:为了响应cell的点击事件,你需要遵循...

    UITableView删除Cell示例

    2.实现了可删除的tableViewCell,向左划动某个cell,cell右侧会出现“删除”按钮,点击即可将当前cell删除,删除伴有简单的动画效果。 3.实现了tableView的下拉刷新功能,下拉tableView的过程中,将依次显示“下拉...

    UItableview cell (自定义)增假,删除 移动

    在实际应用中,我们经常需要对UITableView中的Cell进行自定义,以满足各种复杂的需求,如添加、删除和移动单元格。这个主题主要涵盖以下几个方面: 1. **自定义UITableViewCell** 自定义UITableViewCell主要是为了...

    UITableView自定义Cell-XIB.zip

    在iOS开发中,UITableView是展示数据列表的重要控件,而自定义Cell则可以让我们的应用界面更加丰富多彩,提供更好的用户体验。本教程将详细讲解如何利用XIB(Interface Builder)文件来创建自定义的UITableViewCell...

    ios 根据文件内容自动设置UITableView(cell)行高

    ios 根据文件内容自动设置UITableView(cell)行高 在程序开发中,很多数据是动态获取的,通常UITableView中的行高设置为固定的,当文字量比较多时,程序会自动隐藏多余的数据,并且在可以显示的位置最后加‘…’,...

    在UITableView中自定义UITableViewcell实现ibooks图书列表样式

    7. **数据绑定**:在`- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath`中,获取到自定义Cell后,根据数据源(如NSArray或NSMutableArray)设置Cell内的各...

    iOS-UITableview 的cell边线阴影

    在iOS开发中,`UITableView`是用于展示列表数据的核心组件,而给`UITableViewCell`添加边线阴影以及渐变效果能够提升界面的视觉层次感和用户体验。这篇内容将深入讲解如何实现`UITableView`的cell边线阴影及渐变设计...

Global site tag (gtag.js) - Google Analytics