使用UITableView展示数据
TableView主要用于展示数据,类似于Android中的ListView。
我们可以通过两个方式使用TableView。第一种是直接使用TableView类。第二种是通过UITableViewController类。
第一种方式主要是通过实例化一个UITableView类,然后将类实例添加到主界面,代码如下
这样,一个简单的tableview就创建了,当然这个时候界面中是没有数据的。
运行结果如下:
接下来为TableView添加数据。通过查看UITableView类的头文件可知道,该类有一个dataSource属性,属性遵守了UITableViewDataSource协议。
因此,该属性只接受类型为UITableViewDataSource的值。在这里我们只需要令viewController遵守该协议即可,然后就可以将dataSource属性值设为self。
代码如下:
这个时候xcode会有一个黄色的感叹号,因为我们还没有实现协议里面的方法。
要为TableView提供数据,我们必须至少实现下面的两个方法:
- (NSInteger)tableView:(UITableView *
)tableView
numberOfRowsInSection:(NSInteger
)section
- (UITableViewCell *)tableView:(UITableView *
)tableView
cellForRowAtIndexPath:(NSIndexPath *
)indexPath
第一个方法告诉TableView每个section有多少行,第二个方法用于设置每一行的外观(View)是怎样的。TableView中每一行都是一个UITableViewCell类。
现在先把这两个方法实现一下。代码如下:
运行效果:
UITAbleViewDataSource中还有一个方法用来设置section,因为我们没有实现这个方法,所以section默认值是0。
该方法是:
- (NSInteger)numberOfSectionsInTableView:(UITableView *
)tableView
通过实现这个方法修改section数量:
修改后运行效果:
使用UITableViewController创建Tableview
默认情况下每个视图的控制器都是UIViewController,通过修改UIWindow类中的rootViewController属性的值可以改变这个行为。
因此下面的代码在appDelegate.m文件中的
- (BOOL)application:(UIApplication *
)application
didFinishLaunchingWithOptions:(NSDictionary *
)launchOptions
方法中进行。
首先创建一个继承自UITableViewController的类。
类创建好后基本上就是在这个新建的类中实现上面的方法即可。因为UITableViewController类已经遵守了UITableViewDataSource协议。
而且UITableViewController里面已经有TableView的属性,因此我们无需实例化UITableView。
MyTableViewController类中的代码:
最后将rootViewController设置为新建立的类:
运行结果: