`

UITableView小结

 
阅读更多

 

UITableViewDataSource

 

#pragma mark - UITableViewDataSource
//一共有多少组(可以不写,默认为1组)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return  1;
}
//每个组有多少数据
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 10;
}
//每组数据如何显示
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    static NSString *CellIdentifier = @"Cell_ABC";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier] ;
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        //使用xib自定义时使用
        //cell = [[[NSBundle mainBundle] loadNibNamed:@"XYContentCell" owner:self options:nil] lastObject];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    }
    
    cell.textLabel.text = @"123";
    
    
    return cell ;
}

 

 

 

获取UITableView 内部高度(Content Height)

 

- (CGFloat)tableViewHeight {
    [tableView layoutIfNeeded];
    return [tableView contentSize].height;
}

 

 

UITableView 某一行 默认是 选中 状态

NSIndexPath *index0 = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView selectRowAtIndexPath:index0
                            animated:YES
                      scrollPosition:UITableViewScrollPositionBottom];

 

UITableView 滑动到指定位置

 

NSArray *visibleRows = [self.mTableView indexPathsForVisibleRows];
        if (visibleRows.count > 0) {
            NSIndexPath *visibleIndexPath = visibleRows[0];
            if (visibleIndexPath.row == indexPath.row) {
                //滑动到 指定位置
                [self.mTableView scrollToRowAtIndexPath:indexPath
                                       atScrollPosition:UITableViewScrollPositionTop
                                               animated:YES];

 

 

UISwitch in a UITableView cell (UITableViewCell里镶嵌UISwitch)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    switch( [indexPath row] ) {
        case MY_SWITCH_CELL: {
            UITableViewCell* aCell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"];
            if( aCell == nil ) {
                aCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SwitchCell"] autorelease];
                aCell.textLabel.text = @"I Have A Switch";
                aCell.selectionStyle = UITableViewCellSelectionStyleNone;
                UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
                aCell.accessoryView = switchView;
                [switchView setOn:NO animated:NO];
                [switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
                [switchView release];
            }
            return aCell;
        }
            break;
    }
    return nil;
}

- (void) switchChanged:(id)sender {
    UISwitch* switchControl = sender;
    NSLog( @"The switch is %@", switchControl.on ? @"ON" : @"OFF" );
}

 

 

自定义UITableView的Header

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    
    
    // create the parent view that will hold header Label
    UIView* customView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320, 20.0)];
    
    UIImageView *bg = [[UIImageView alloc]initWithFrame:customView.frame];
   
    bg.image = [UIImage imageNamed:@"carTypeCellTitleBg1.png"];
  
    
    [customView addSubview:bg];
    
    // create the button object
    UILabel * headerLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    
    headerLabel.backgroundColor = [UIColor clearColor];
    
    headerLabel.opaque = NO;
    headerLabel.textColor = [UIColor colorWithRed:242.0/255.0f green:161.0/255.0f blue:4.0/255.0 alpha:1.0];
    
    //	headerLabel.highlightedTextColor = [UIColor whiteColor];
    
    headerLabel.font = [UIFont italicSystemFontOfSize:15];
    headerLabel.frame = customView.frame;
    
    // If you want to align the header text as centered
    // headerLabel.frame = CGRectMake(150.0, 0.0, 300.0, 44.0);
    
    //	headerLabel.text = <Put here whatever you want to display> // i.e. array element
    
    
    headerLabel.text = @"title";
    
    [customView addSubview:headerLabel];
    
    return customView;
   	
}

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
	return 21.0;
}

 

 

1.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

方法要比

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 方法

先返回

 

即,高度比cell填充先返回

 

2.

xib自定义Cell,复用无效;需要用代码重写

 

再一次验证,xib自定义的Cell可以复用

有两种方式,

第一种:

     在自定义的Cell里面重写reuseIdentifier方法

- (NSString*)reuseIdentifier
{
    //返回的是在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;方法里定义的reuseIdentifier
    return @"ContentCELL";
}

 

 

 第二种:

在cell的xib文件里定义

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    UITableView、UITableView基本用法、UITableView详解

    iOS 开发中 UITableView 的使用详解 UITableView 是 iOS 开发中最常用的控件之一,用于显示列表数据。它类似于 Android 中的 ListView,都是用于显示列表数据的控件。在 iOS 开发中,UITableView 是一个非常重要的...

    UITableView

    UITableView是iOS应用开发中不可或缺的一部分,特别是在Swift编程环境中。它是一种用于显示大量数据的视图控件,可以灵活地展示列表或表格形式的信息。在Swift中,UITableView的使用涉及到多个知识点,包括数据源...

    iPhone之UITableView入门

    在iOS开发中,UITableView是应用最广泛的一种控件,它被用来展示列表或者表格数据,类似于Android中的ListView。本教程将带你入门iPhone上的UITableView使用,通过一个简单的示例项目"**MyTableView**"来深入理解其...

    UITableview处理键盘遮挡

    在iOS开发中,`UITableView` 是一个非常常用且强大的组件,用于展示列表数据。然而,在实际应用中,我们经常会遇到一个问题:当用户在`UITableView`中的输入框(如UITextField)中输入时,弹出的键盘可能会遮挡住...

    UITableView的SectionHeader的复用

    在iOS开发中,UITableView是一种非常重要的视图组件,用于展示数据列表。当表格中的数据分为多个部分(sections)时,每个部分通常会有一个header视图,用来标识该部分的主题。然而,随着数据量的增大,如果对每个...

    IOS iphone UITableView简单例子

    在iOS开发中,UITableView是一种非常重要的控件,用于展示数据列表。这个“IOS iphone UITableView简单例子”是一个基础的教程,旨在帮助开发者理解如何在iPhone应用中实现UITableView的基本功能。在这个项目中,...

    UITableView2 Demo代码

    附属视图通常是出现在单元格右侧的小图标,比如勾选框或箭头,用于指示更多信息或者操作。在UITableViewCell中,我们可以添加`accessoryView`,这是一个可以自定义的视图,如UILabel或UIImageView。常见的是使用`...

    UITableView 详细讲解.

    UITableView 详细讲解

    UITableView 的缩放和展开

    在iOS开发中,UITableView是一种常用的UI组件,用于展示列表数据。`UITableView`的缩放和展开功能通常是通过自定义扩展来实现的,特别是在构建类似下拉菜单或树形结构的界面时。`UITableViewDropDown`的概念可能指的...

    IOS UItableview的重用

    UITableView通过重用单元格来达到节省内存的目的:通过为每个单元格指定一个重用标识符 reuseIdentifier 即指定了单元格的种类 以及当单元格滚出屏幕时 允许恢复单元格以便重用 对于不同种类的单元格使用不同的ID ...

    swift-UITableViewCache-UITableView缓存

    在iOS应用开发中,Swift语言为我们提供了强大的UITableView控件,用于展示列表数据。然而,当数据量较大或者频繁滚动时,如果不进行优化,可能会导致性能下降。这就是UITableView缓存的作用,它能有效提升滚动时的...

    UITableView Demo代码

    在iOS开发中,UITableView是用于显示可滚动列表的视图,是用户界面设计中的核心组件之一。本Demo项目“UITableView Demo”旨在展示如何在实际应用中有效地使用UITableView及其相关的UITableViewCell来构建一个功能...

    UITableView空数据处理

    在iOS开发中,UITableView是一种常用的UI组件,用于展示列表数据。当UITableView没有数据时,界面显示一片空白,用户体验可能不佳。因此,"UITableView空数据处理"成为了一个重要的设计和编程考虑点。本篇将深入探讨...

    iOS UItableView

    在iOS开发中,UITableView是构建用户界面的重要组件,它用于展示列表或表格数据。这个教程将专注于如何在UITableView中实现查询功能以及集成UISEARCHBAR,让用户体验更加友好和高效。 首先,我们需要理解...

    对整个uitableview截图

    在iOS开发中,`UITableView` 是一个非常常用的组件,用于展示列表数据。有时,开发者可能需要将整个`UITableView`的内容截图并保存为一张长图片,例如为了分享或记录用户当前的状态。这个过程涉及到屏幕截图、滚动...

    纯代码创建UITableView

    在iOS开发中,UITableView是一种非常重要的视图组件,它用于展示列表数据,通常用于实现诸如联系人列表、新闻摘要等功能。本教程将详细介绍如何通过纯代码方式创建一个简单的UITableView,这对于初学者来说是一次很...

    iOS基本控件UITableView示例

    在iOS开发中,UITableView是一个至关重要的控件,用于展示数据列表。它被广泛应用于各种应用程序,如消息列表、联系人目录、菜单选项等。本示例将深入探讨UITableView的基本使用方法,帮助开发者理解和掌握其核心...

    UITableView的简单使用

    UITableView是iOS开发中不可或缺的一部分,它是展示数据列表的首选控件。在iOS应用设计中,无论是展示联系人、邮件列表还是商品详情,UITableView都扮演着关键角色。本教程将深入探讨UITableView的简单使用,帮助...

    UITableView 三级菜单

    在iOS开发中,UITableView是一种常用的数据展示控件,用于创建列表或表格视图。当涉及到更复杂的层级结构,如三级菜单,我们需要巧妙地利用UITableView的特性来实现。在这个主题下,我们将深入探讨如何构建一个支持...

Global site tag (gtag.js) - Google Analytics