iOS开发笔记--UITableView入门

本文详细介绍了如何在iOS应用中实现TableView,包括创建项目、添加TableView控件、配置数据源等步骤,并通过示例代码展示了如何使TableView显示数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TableView在iOS开发中使用频率很高

TableView就相当于Android中的ListView

今天简单分享一下如何实现简单的TableView

ok废话不多说


开打Xcode



Single View Application模版创建一个新项目


点击Next

输入一个项目名字 比如Table

接着Next 然后Create创建好项目

现在项目应该是这个样子



首先添加一个UITableView

点击ViewController.xib文件

在右下角的控件列表里找到Table View



按住鼠标将其拖拽到View里头

结果应该是这个样子



好 这个时候可以运行一下程序看看效果

按Command+R运行

可以看到TableView了 但是是空白的



在Android中 要在Listview中显示数据就需要给Listview添加一个Adapter 可以理解为数据源


现在就给TableView添加数据源

在左边的项目面板中选择ViewController.h文件


修改代码 如图



在父类UIViewController后面加上TableView的两个委托

可以理解为Java中的借口 就是实现了两个接口


下一步

在左边的项目面板中选择ViewController.xib文件

并在右边确保选住了Table View



这个时候按住键盘上的control键 鼠标点击一下Table View

之后会弹出这个框


之后的操作很简单

如图

鼠标选到Outlets下的dataSource右边的圆圈里

圆圈里会出现一个加号

然后按住鼠标拖拽到上方的File's Owner 放开鼠标

这样就完成了 控件跟代码的绑定



类似的 同样的操作把Outlets下的delegate也绑定上

最后效果应该是这个样子




接下来需要写代码了

在左边的项目面板中选择ViewController.m文件

修改代码 如下

//
//  ViewController.m
//  Table
//
//  Created by Green on 12-9-4.
//  Copyright (c) 2012年 Green. All rights reserved.
//

#import "ViewController.h"

#define IDENTIFIER @"identifier"

@interface ViewController ()

@property (nonatomic) NSArray *dataList;

@end

@implementation ViewController

@synthesize dataList;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    
    return self;
}

#pragma mark - View Life Circle

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self setDataList:[[NSArray alloc] initWithObjects:@"line1", @"line2", @"line3", nil]];
}

- (void)viewDidUnload {
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

#pragma mark - Table View

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (dataList) {
        return dataList.count;
    }
    
    return 0;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:IDENTIFIER];
    
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:IDENTIFIER];
    }
    
    [cell.textLabel setText:[dataList objectAtIndex:indexPath.row]];
    
    return cell;
}

@end

现在解释一下 TableView的委托方法

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
这个方法返回的就是TableView中数据的组数

只有1组 所以返回1


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (dataList) {
        return dataList.count;
    }
    
    return 0;
}
这个方法返回的是特定组中数据的条数 因为只有1组 可以不用考虑组数

这里用了一个dataList来储存数据

所以返回dataList的count


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:IDENTIFIER];
    
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:IDENTIFIER];
    }
    
    [cell.textLabel setText:[dataList objectAtIndex:indexPath.row]];
    
    return cell;
}

这个方法 就类似Android中BaseAdapter的getView方法

返回的是TableView中给个条目的View

也就是UITableViewCell

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:IDENTIFIER];

为了节省内存开销

TableView有个TableViewCell复用的机制

根据IDENTIFIER来取回一个复用的TableViewCell

if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:IDENTIFIER];
    }
如果没有就new一个


[cell.textLabel setText:[dataList objectAtIndex:indexPath.row]];
然后把cell的文字设置成dataList中的数据


运行程序就可以看到效果了

这个时候TableView里有数据了

 

今天的分享就到这里


资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值