开题
在很多时候感觉嘛,做iOS开发其实很简单嘛,除了UI就是UI,好像看不出还有什么需要做的功能。在苹果的iOS系统上面使用一款应用,就会有一种简约的感受,因为在用户体验上苹果爸爸已经帮你优化得很好了。
作为一名iOS狗,除了跪舔各种苹果的logo外,还有就是享受自己设计的爱屁屁了....今天无聊就想说点自己对代码的看法吧
关于UITableView
在iOS开发的页面布局中,见的最多的就是UITableView这货了,掌握了这货,可以说是能胜任百分之七十的开发工作,剩下的百分之三十那就是iOS开发里最难的了,哈哈哈
在习惯使用StoryBoard来做页面布局的时候,往页面中拖入一个UITableView那是相当快的。然而有时候就是要你手撸一个UITableView出来,这时候就尴尬了啊,想个半天没下手,因为不知道从何下手,真是尴尬。不得已老老实实的回顾一下如何创建一个UITableView出来了,自己也手撸了
脑子里的想着如何设计的
先说说UITableView的一些不能忽视的内容,敲黑板了啊敲黑板了啊,UITableView最重要的是一个数据源和一个代理,数据源(UITableViewDatasource)是用来设计UITableView的内容的,类似控制着多少行数据啊,每行数据怎么显示的啊之类的,代理方法(UITableViewDelegate)这是做一些页面交互的操作等,还有调整页面的显示样式的,类似表头啊什么的
要在一个页面上显示出一个UITableView,首先的创建UITableView嘛,在哪创建,在页面初始化的地方创建,在ViewController的viewDidLoad方法里面给UITableView做初始化,然后给当前的ViewController设置成为UITableView的代理,
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
_tableView.dataSource = self;
_tableView.delegate = self;
[self.view addSubview:_tableView];
成为了代理,那就要实现相应的代理方法。先是针对数据源的代理,我们需要一个数据源,一般来说都是以数组NSArray的形式作为_tableView的数据源,里面存储这_tableView要显示的数据。对数据源我们至少要实现两个方法,一个是
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section {
return dataArray.count;
}
一个是关于每行cell的相关设置的
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
static NSString *cellID =@"testCell";
UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:cellID];
if(!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
}
//从数据源中取数据来显示
NSString *title = dataArray[indexPath.row];
cell.textLabel.text= title;
return cell;
}
在这个方法里,我们就是从数据源里面取出相关的数据来显示_tableView的内容的。
简单的tableView就算创建出来了,灵活就在我们怎么面对复杂的数据源的处理,如何处理,或者从一个页面把数据源传递到另一个页面去显示,这些就是我们需要控制的地方了。或者我们可以尝试着封装一个页面,只需要传递一个数组到目标页面,把接收到的数组设置为tableView的数据源,然后调用一下tableView的刷新方法,就可以显示出我们想要的数据了。
总结一下
写的这点东西只是脑子里回顾一下如何创建一个tableView并显示出来。习惯了复制和粘贴,在我们的脑子里只是存着方法,却没存着自己的代码,等到需要用的时候还是要去查找一遍,那就太浪费时间了。作为一个有目标的iOS狗,还是给自己点时间来补充点狗粮比较好。