zoukankan      html  css  js  c++  java
  • iOS编程教程(四):创建一个简单的表视图

    创建Hello World应用程序有乐趣吗?在本教程中,我们将继续创建更复杂的东西,并使用表视图构建一个简单的应用程序,。如果你没有看过以前的iOS编程的基本教程,在继续接下来的教程之前先看看把。

    首先,在iPhone应用程序什么是表视图中?表视图是一种常见的UI元素在iOS应用程序。在某些方面,大多数应用程序,使用表视图去显示数据列表。最好的例子是内置的手机应用程序。您的联系人显示在表视图中的。另一个例子是邮件程序。它使用表视图来显示你的信箱和电子邮件。,表视图不仅被设计去显示文本数据,也允许您数据在图像中显示。内置的视频和YouTube应用程序都是很好的例子。

    image

    使用表视图的应用程序示例

    创建SimpleTable项目

    有了表视图的简单理解,让我们开始着手创建一个简单的应用程序。如果你是认真学习的iOS编程就不要只翻阅文章。打开你的Xcode和代码!这是最好的方式来研究编程。

    启动Xcode,创建一个新的项目“Single View application(单一视图的应用程序)

    image

    Xcode项目模板选择

    点击“Next(下一步)继续。再次,填写所需的所有选项的Xcode项目:

    ·         Product Name(产品名称):SimpleTable-这是您的应用程序的名称。

    ·         Company Identifier(公司标识):com.appcoda -它实际上是域名反写。如果你有一个域,您可以使用您自己的域名。否则,你可能会使用我们的,或者只需填写在“edu.self”

    ·         Class Prefix(类前缀):SimpleTable - Xcode使用的类的前缀自动命名类。以后,你可以选择自己的前缀,甚至留空白。但在本教程中,让我们保持简单,使用“SimpleTable”好了。

    ·         Device Family(设备系列):iPhone -使用“iPhone”这个项目。

    ·         Use Storyboards(使用故事板) [unchecked] -不要选择此选项。这个简单的项目我们不需要故事板。

    ·         Use Automatic Reference Counting(使用自动的引用计数):[checked]-默认情况下,这应该被启用。不用管他。

    ·         Include Unit Tests(包括单元测试):[unchecked] -不要选中此复选框。现在,你不需要单元测试类。

    image

    SimpleTable项目选项

    点击“Next(下一步)继续。Xcode然后问你在哪里保存 “SimpleTable”的项目。选择任何文件夹(例如桌面)来您的项目。并且,取消Source Control(源代码管理)选项。单击“Create(创建)继续。

    image

    选择一个文件夹来保存你的项目

    当你确认,Xcode根据您所提供的选项自动创建“SimpleTable项目。结果屏幕看起来像这样:

    image

    主屏的SimpleTable项目的

    设计视图

    首先,我们将创建用户界面和添加表视图。选择“SimpleTableViewController.xib”切换到界面生成器。

    image

    Interface BuilderSimpleTable项目

    在对象库中,选择“Table View(表视图)对象,并将其拖动到视图中。

    image

    插入表视图后您的屏幕应该像下面这样。

    image

    第一时间运行你的程序

    在继续之前,请尝试使用模拟器来运行你的应用程序。单击“Run(运行)按钮来建立你的应用程序并测试它。

    image

    模拟器的屏幕上会看起来像这样:

    image

    很简单,对不对?你已经在你的应用程序添加表视图了。但就目前而言,它不包含任何数据。接下来,我们将编写一些代码,来添加数据到表中。

    添加表数据

    回到Project Navigator(项目导航器)中,选择“SimpleTableViewController.h” “UIViewController”后添加“<UITableViewDelegate, UITableViewDataSource>”。你的代码应该象下面这样:

    1
    2
    3
    4
    5

    #import <UIKit/UIKit.h>

    @interface SimpleTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

    @end

    Objective-C “UITableViewDelegate”“UITableViewDataSource”被称为协议。基本上,为了在表视图中显示数据,我们必须遵循协议规定的要求,并实现所有强制性方法。

    UITableViewDelegateUITableViewDataSource

    此前,我们已经在头文件中添加了“UITableViewDelegate”“UITableViewDataSource”协议,。这可能会有点混乱。他们是干什么的呢?

    在表视图后的实际类UITableView,,被设计成灵活处理各种不同类型的数据。您可能会显示一个列表的国家或联系人的姓名。或者像这个例子,我们将使用表视图呈现食谱列表。那么,你如何告诉UITableView的列表中要显示的数据呢?UITableViewDataSource就是答案。这是您的数据和表视图之间的链接。UITableViewDataSource协议声明了两个你必须实现的方法(tableView:cellForRowAtIndexPath and tableView:numberOfRowsInSection),。通过实施这些方法,你告诉表视图中显示多少行,和每行中的数据。

    另一方面,UITableViewDelegate,涉及到UITableView的外观。协议的可选方法,让你管理​​表里单个行的高度,配置表头和表尾,重新排序表格单元格。在这个例子中我们不改写这些方法。让我们把他们留在未来的教程把。

    接着,选择“SimpleTableViewController.m”,并定义一个实例变量的表中的数据。

    1
    2
    3
    4

    @implementation SimpleTableViewController
    {
        
    NSArray *tableData;
    }

    在方法view DidLoad中,添加以下代码,来初始化”tableData“数组。我们用食谱列表来初始化数组。

    1
    2
    3
    4
    5
    6

    - (void)viewDidLoad
    {
        
    [super viewDidLoad];
        
    // Initialize table data
        tableData 
    = [NSArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger", @"Ham and Egg Sandwich", @"Creme Brelee", @"White Chocolate Donut", @"Starbucks Coffee", @"Vegetable Curry", @"Instant Noodle with Egg", @"Noodle with BBQ Pork", @"Japanese Noodle with Pork", @"Green Tea", @"Thai Shrimp Cake", @"Angry Birds Cake", @"Ham and Cheese Panini", nil];
    }

    什么是数组?

    数组是一种计算机编程里的基本数据结构。你可以把一个数组作为数据元素的集合。回到上述代码中的数组tableData在,它代表文本元素的集合。您可以把数组想像成这样:

    image

    数组元素中的每一个都能被识别或通过索引来访问。具有10个元素的数组,将具有从09的目录。这意味着,tableData [0]返回的“tableData”数组的第一个元素。

    Objective CNSArray是用于创建和管理数组的类。您可以使用NSArray创建大小固定的静态数组。如果你需要一个动态数组,可以使用NSMutableArray

    NSArray提供工厂方法来创建一个数组对象。在我们的代码中,我们使用“arrayWithObjects”来实例化一个NSArray对象,并预载特定元素(如汉堡包)。

    您还可以使用内置的方法来查询和管理数组。之后,我们将调用count的方法来查询数组中的数据元素数量。要了解更多有关NSArray的使用方法,你可以经常参考苹果的官方文件

    最后,我们必须添加两个数据源方法:“tableViewnumberOfRowsInSection”“tableViewcellForRowAtIndexPath”。这两种方法都是UITableViewDataSource协议的一部分。配置一个UITableView时,这是必须实现的方法。第一种方法是告知一个表视图页面中有多少行。因此,让我们添加下面的代码。“count”的方法只是简单返回在“tableData”数组的项目数。

    1
    2
    3
    4

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
       
    return [tableData count];
    }

    下一步,我们实现所需的其他方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        
    static NSString *simpleTableIdentifier = @"SimpleTableItem";

        UITableViewCell 
    *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

        
    if (cell == nil) {
            cell 
    = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
        
    }

        cell.textLabel.text 
    = [tableData objectAtIndex:indexPath.row];
        
    return cell;
    }

    每次显示时表行,“cellForRowAtIndexPath”方法被执行。下面的插图会给你一个更好地了解关于UITableViewUITableDataSource如何工作。

    image

    UITableViewUITableDataSource如何一起工作

    好吧,让我们点击“Run(运行)按钮,并试验您的最终应用程序!如果你正确地编写代码,在模拟器运行的程序是这样的:

    image

    为什么它仍然是空白呢?我们已经写好生成表中数据、实现了所需方法的代码。但是,为什么表视图没有像预期那样显示呢?

    其实一件事情。

    连接数据源和委托(Delegate

    第一个教程中“Hello World”按钮,我们要建立表视图和我们刚刚创建的两个方法之间的连接。

    返回到“SimpleTableViewController.xib”。按住键盘上的Control键,选择表视图并拖动到“File’s Owner(文件的所有者)。您的屏幕应该是这样的:

    image

    连接表视图的数据源和委托

    松开按钮,将显示数据源委托弹出式窗口。选择数据源,建立表视图和数据源之间的连接。重复上述步骤,并与委托进行连接。

    image

    连接数据源和委托

    就是这样。为了确保是否连接正确,您可以选择表视图。在Utility area(实用区域)的上半部分,您可以在“Connection Inspector”(即最右边的标签页)显示现有连接。

    image

    显示连接检查

    测试您的应用程序

    最后,它已经准备好测试您的应用程序。只要按一下运行按钮,让您的模拟器加载应用程序:

    image

    添加缩略图到您的表视图

    表视图是过于平淡,是吧?给每一行添加添加图像怎么样?iOSSDK使得它非常容易就做到这一点。你只需要为插入每一行的缩略图添加一行代码。

    首先,下载这个示例图像。或者,您可以使用自己的图像,但要确保你的图片名字是“creme_brulee.jpg”。在项目浏览器中,用鼠标右键单击的“SimplyTable”文件夹,选择“Add Files to SimpleTable…”

    image

    图像添加到您的项目

    选择图像文件,并选中“Copy items to destination group(将项目复制到目标组的文件夹)复选框。单击确定添加文件。

    image

    选择你的图像文件,并添加到项目中

    现在,编辑“SimpleTableViewController.m”,并添加下面这行代码到“tableViewcellForRowAtIndexPath”方法:

    1

        cell.imageView.image = [UIImage imageNamed:@"creme_brelee.jpg"];

    编辑后,你的代码应该是这样的:

    image

    选择你的图像文件,并添加到项目中

    这行代码的用处是加载图像并显示在表格单元格的图像区域中。现在,再次点击“Run(运行)按钮,您的SimpleTable应用程序应在每一行显示图像:

    image

    接下来干什么呢?

    建一个表视图是简单的把,对不对?表视图在iOS编程的最常用的元素之一。如果你按照教程构建应用程序,你应该对关于如何创建表视图有一个基本的了解。在本教程中我尽量保持一切都简单化。在现实中,表中的数据将不会在代码中直接赋值。通常情况下,它能从文件、数据库或其他地方中加载。

    在接下来的教程中,我们将看看如何可以进一步自定义的表格单元格。

  • 相关阅读:
    Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存
    快速排序
    JDK,JRE,JVM区别与联系
    RocketMQ
    IO、NIO、AIO 内部原理分析
    java设计模式-回调、事件监听器、观察者模式
    Spring源码相关
    java单例模式几种实现方式
    RabbitMQ学习笔记二:Java使用RabbitMQ
    RabbitMQ学习笔记一:本地Windows环境安装RabbitMQ Server
  • 原文地址:https://www.cnblogs.com/haichao/p/2762758.html
Copyright © 2011-2022 走看看