目录:

一、UIPageControl

二、table view数据模型

三、反向传值给TableView并更新

回到顶部

一、UIPageControl在页面下显示点

1 重要属性

.numberOfPages有多少个点

.userInteractionEnabled用户控制交互开关

.currentPage当前页

//创建图片下方的点 PageControl

UIPageControl *pageControl = [[UIPageControl alloc] init];

pageControl.frame = CGRectMake(0, self.view.frame.size.height - 50, self.view.frame.size.width, 20);

//有多少个点

pageControl.numberOfPages = self.imageNames.count;

//控制用户交互开关 点小点是否起作用

pageControl.userInteractionEnabled = NO;

self.pageControl = pageControl;

[self.view addSubview:pageControl];

这里有一个滑动页面之后调用的一个方法,这个方法是scrollview代理中的一个很重要的方法

//滑动之后调用的方法

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{

CGPoint point = scrollView.contentOffset;

//NSLog(@"%lf,%lf",point.x,point.y);

//改变pageControl的当前也属性currentPage

self.pageControl.currentPage = round(point.x / 320);

}

回到顶部

二、table view数据模型

1 数据模型1 tableview -> nsarray -> 对象 -> 属性

MXMyTableViewController : UITableViewController

2 推出新的界面,基本上需要用navigation做

tableview的数据模型1是这样的:首先定义一个公开或者是似有的NSArray数组,定义一个继承自NSObject类,这个类有属性,在tableview中把这个类的引用添加到数组中,然后访问对象里的属性。

三问一响应中的一响应是这样的:就是点击tableview里的cell(中文单人小室)之后做出的响应,这个响应肯定推出一个界面,这个界面是UIViewController通常用self.navagationcontroller导航视图push这个视图,从而成为导航视图中的一个视图,在tableview的代理中系统给我们提供了一个方法来推出这个界面,这个方法是:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

在这个方法里面创建了一个uiviewcontroller视图并被navigationcontroller导航视图push出来。此时一般需要正向传值。

MXPhoto *photo = self.photos[indexPath.row];

detailViewController.bigPictureFilename = photo.bigPicuterFileName;

3 模型2:tableview -> NSArray -> 对象 -> NSArray

+(NSArray *)areas{

MXArea *a1 = [[MXArea alloc] init];

a1.name = @"北京";

a1.subNames = @[@"东城", @"西城", @"崇文", @"宣武", @"朝阳", @"海淀"];

MXArea *a2 = [[MXArea alloc] init];

a2.name = @"上海";

a2.subNames = @[@"浦东", @"洋浦", @"松江", @"虹口", @"徐汇", @"闸北"];

MXArea *a3 = [[MXArea alloc] init];

a3.name = @"广州";

a3.subNames = @[@"天河", @"棠下", @"越秀", @"白云"];

return @[a1,a2,a3];

}

程序流程:

1.创建MXAreaTableViewController

2.注入Model数据

3.navi显示MXAreaTableViewController,三问?几个分区,几行,每一行cell

4.一响应,实现didSelectRowAtIndexPath方法

在方法中推新的tableViewController,在推新的tableViewController之前需要正向传值,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

MXSubAreaTableViewController *detailViewController = [[MXSubAreaTableViewController alloc] initWithNibName:@"MXSubAreaTableViewController" bundle:nil];

// 传值

MXArea *area = self.areas[indexPath.row];

detailViewController.subAreas = area.subNames;

detailViewController.title = area.name;

// Push the view controller.

[self.navigationController pushViewController:detailViewController animated:YES];

}

加深理解

模型2:NSArray 1-> 对象 -> NSArray2

NSArray 1中有多少个对象就有多少个section。

每个section有多少行,以section做为下标拿到对象,对象中的NSArray2中有多少数据,就有多少行。

每一行是cell,先通过indexPath.section确定是哪个对象,在通过indexPath.row确定此对象中的NSArray2是哪个。

return self.areas.count;//返回区数

MXArea *area = self.areas[section];

return area.subNames.count;//返回行数

MXArea *area =self.areas[indexPath.section];//区

cell.textLabel.text = area.subNames[indexPath.row];//行

加一问:每个section的header叫什么名字,tableview遵守的协议UITableViewDataSource中提供了一个方法解决这个问题

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{

MXArea *area = self.areas[section];

return area.name;

}

回到顶部

三、反向传值给TableView并更新

1 输入界面MXInputViewController(委托方)

三步曲:

1)定义委托协议

2)定义委托属性delegate

3)用户输入完成后调用委托对象的方法,传参

2 显示界面MXMemoireViewController(被委托方) TableView

三步曲:

1) 遵守委托协议

2) 实现委托方法

3) 设置当前对象为委托方的delegate

在委托方法中:

1)更新Model数据

2)更新界面

两种方式:

//更新界面 两种方法

// 1 全部更新 不推荐使用

//[self.tableView reloadData];//重新加载 全部加载 代价大

// 2 逐行添加 只更新指定行

NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.memoires.count-1 inSection:0];

[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

作业:

1. 写一个模仿通讯录的程序

1)数据模型:

MXContact:

-firstName:  姓

-lastName: 名

-phoneNumber: 电话号码

-iphone: 电话号码

2)显示界面

Navigation包TableViewController

TableViewController

-contacts : NSMutableArray

-[item]  MXContact

3)添加联系人界面

自己设计,要求不能用navi  push此界面,要用present来展示此界面,但此界面也有自己的NavigationController

会涉及反向传值, 使用委托

2. 春节前淘宝广告:

做一个TableViewController的界面,界面的最上面一行是广告栏,再下面才是商品列表

广告是一个Cell, Cell中有一个UIScrollView, UIScrollView中有多个UIImageView, 多个imageView可以滚动

控制frame的问题

补充知识点:

[NSMutableArray copy];NSMutableArray调用copy方法返回NSArray

06-UIKit(tableView数据模型)的更多相关文章

  1. UITableView 学习笔记

    http://www.cnblogs.com/smileEvday/archive/2012/06/28/tableView.html UITableView学习笔记 作者:一片枫叶 看TableVi ...

  2. (转)IOS UITableView学习

    转自:http://www.cnblogs.com/smileEvday/archive/2012/06/28/tableView.html          作者:一片枫叶 看TableView的资 ...

  3. UITableView(转)

    一.UITableView概述 UITableView继承自UIScrollView,可以表现为Plain和Grouped两种风格,分别如下图所示:          其中左边的是Plain风格的,右 ...

  4. iOS - UIView

    前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppeara ...

  5. 08-UIKit(UITableTableViewCell、自定义Cell、xcode调试)

    目录: 1. UITableTableViewCell 2. tag技术 3. 自定义Cell 4. 用nib文件构造自定义的静态表 5. TableView数据模型总结 6. Xcode代码调试 & ...

  6. iOS网络加载图片缓存与SDWebImage

    加载网络图片可以说是网络应用中必备的.如果单纯的去下载图片,而不去做多线程.缓存等技术去优化,加载图片时的效果与用户体验就会很差. 一.自己实现加载图片的方法 tips: *iOS中所有网络访问都是异 ...

  7. iOS UIKit:TableView之表格创建(1)

    Table View是UITableView类的实例对象,其是使用节(section)来描述信息的一种滚动列表.但与普通的表格不同,tableView只有一行,且只能在垂直方向进行滚动.tableVi ...

  8. iOS UIKit:TableView之编辑模式(3)

    一般table view有编辑模式和正常模式,当table view进入编辑模式时,会在row的左边显示编辑和重排控件,如图 42所示的编辑模式时的控件布局:左边的editing control有表 ...

  9. iOS UIKit:TableView之单元格配置(2)

    Table View是UITableView类的实例对象,其是使用节(section)来描述信息的一种滚动列表.但与普通的表格不同,tableView只有一行,且只能在垂直方向进行滚动.tableVi ...

随机推荐

  1. 关于css里的class和id

    id 是唯一的 权重100 相当于身份证 只能有一张. class 可以多个元素都拥有 权重10 就相当于电影票 你有我也有. 用法如下 <divid="box">变颜 ...

  2. SharePoint BCS

    1. 开启相关的服务:管理中心-->应用程序管理-->管理服务器上的服务 2.

  3. 获取图片中的文本--MODI

    http://www.aspsnippets.com/Articles/Read-Extract-Text-from-Image-OCR-in-ASPNet-using-C-and-VBNet.asp ...

  4. 改变status bar的状态

    两种改变status bar状态的方法 一 :(全局的) 直接在当前控制器中(一般是在navigationcontroller) //- (UIStatusBarStyle)preferredStat ...

  5. guava中eventbus注解使用

    guava是 google 几个java核心类库的集合,包括集合.缓存.原生类型.并发.常用注解.基本字符串操作和I/O等等.学会使用该库相关api的使用,能使我们代码更简洁,更优雅,本章节我们来谈谈 ...

  6. JavaSE学习总结第16天_集合框架2

      16.01 ArrayList存储字符串并遍历 ArrayList类概述:底层数据结构是数组,查询快,增删慢,线程不安全,效率高 ArrayList类是List 接口的大小可变数组的实现.实现了所 ...

  7. 字节流复制mp3文件(带缓冲区)

    //自定义的缓冲区 import java.io.*; class  MyBufferedInputStream{    private byte[] buf = new byte[1024]; pr ...

  8. android串行化getSerializable、getSerializableExtra

    android串行化getSerializable.getSerializableExtra 传参 总结 案例1 不用 Bundle 封装数据 提交activity lst.setOnItemClic ...

  9. File中操作路径的API(转)

    这几天一直在搞Java,模板引擎系列和程序猿执业修养系列都暂停了,在Java上忙的不亦乐乎!由于对Java还不太熟悉,经历了各种纠结终于完成了任务.以下是关于Java获取当前目录的方法的备忘录. 原文 ...

  10. ARPU_百度百科

    ARPU_百度百科 ARPU