我的大菠萝 – 5,TableView的数据绑定

时间:2021-05-14 17:05:25

增加工具栏按钮

 

我们首先修改TableView的页面,要增加几个按钮:增加基友、删除基友。我不知道在UI上如何做,因为貌似只能在右侧增加一个bar button item,无法增加多个。

我的大菠萝 – 5,TableView的数据绑定

 

代码很简单。同样,在第二个的ViewController页面,也增加一个按钮:修改基友昵称。

我的大菠萝 – 5,TableView的数据绑定

 

绑定TableView数据

override相关方法

我没有找到泛型列表类,如C#中的List<MyEntityClass>,所以我只能使用NSMutableArray来表达首页的基友列表。

我的大菠萝 – 5,TableView的数据绑定

 

为了绑定TableView,我们需要override几个方法,这几个方法体都是Xcode默认生成的。

我的大菠萝 – 5,TableView的数据绑定

我们只有一个section,所以要修改为return 1;同时把上面那个warning去掉。

 

我的大菠萝 – 5,TableView的数据绑定

上面这个函数,是返回某个section的行数,因为我们只有一个section,只有Profiles这个数组,所以行数就取Profiles count即可。

绑定的核心方法

 

我的大菠萝 – 5,TableView的数据绑定

这个函数就是核心的绑定方法了。在自动生成好的方法内,configure the cell下面,我们需要增加一些内容

首先为了提高绑定性能,需要reuse 这个cell。

我的大菠萝 – 5,TableView的数据绑定

其次,开始绑定数据。大体格式是:图片作为底图,显示昵称,右侧显示一个5类英雄的play time。

动态添加昵称

我的大菠萝 – 5,TableView的数据绑定

动态添加每个class的time play

我的大菠萝 – 5,TableView的数据绑定

设置每个cell的背景图片

我的大菠萝 – 5,TableView的数据绑定

 

此时如果运行,发现并没有数据。因为我们还没有把相关的Profile数据进行赋值。

我们可以在didLoad方法中,先放入一些数据。正规的方法,应该是通过首页的Add方法,增加一个Profile,然后保存到文件中。当重新打开应用时,从文件中读取该信息。

 

我的大菠萝 – 5,TableView的数据绑定

 

最终的运行结果如下

我的大菠萝 – 5,TableView的数据绑定

 

响应查找(增加)操作

UI设计

首先我们设计一个UI界面,用来增加基友。

我的大菠萝 – 5,TableView的数据绑定

一个底图,几个label和textbox,最主要的是一个table view,为了选择区域。目前玻璃渣支持4个服,我们写死好了。

为了数据绑定,我们需要对table view做一些操作。由于这是一个UIVewController,而不是一个TableViewController,所以我们需要扩展该类的接口类型。(注意尖括号之间的两个部分)

我的大菠萝 – 5,TableView的数据绑定

 

同时,我们需要把UI控件分别生成outlet。

我的大菠萝 – 5,TableView的数据绑定

 

对于table view,还需要设置datasource和delegate。这两个东西,需要在story board上选择table view,然后在connections inspector上找到outlet,在右侧的空心圆圈上,拖拽到story board上的view controller节点上。

我的大菠萝 – 5,TableView的数据绑定

 

我的大菠萝 – 5,TableView的数据绑定

然后同第一页的profile绑定,我们增加数据源的处理。

表格背景透明

我的大菠萝 – 5,TableView的数据绑定

单元格背景透明

我的大菠萝 – 5,TableView的数据绑定

 

单选表格样式的变化(类似于RadioButton)

我的大菠萝 – 5,TableView的数据绑定

Profile的保存

Trim的代码

我的大菠萝 – 5,TableView的数据绑定

Append数据的操作

思路是判断文件是否存在,不存在,直接调用writeToFile,否则,调用file handle->seekToEndOfFile操作。

我的大菠萝 – 5,TableView的数据绑定

重新加载数据

按照标示符号拆分字符串,componentsSeparatedByString方法

我的大菠萝 – 5,TableView的数据绑定

 

重新触发table view的绑定事件

对于numberOfSections/numberOfRows/cellForRowAtIndexPath等方法,在页面中只会执行一次(如果没有滚动的话)

Add Profile之后,会强制加载,那么可以用

我的大菠萝 – 5,TableView的数据绑定

传递Profile数据到页面2

只要在第二个页面上定义Profile*变量,然后赋值即可。点击某个基友,导航到第二个页面的代码如下

我的大菠萝 – 5,TableView的数据绑定