经过这段时间的学习,我啃完了IOS开发指南的第一部分。
之前一直没有时间进行整理,今天趁着休息的时间,回顾整理了一下这段时间的学习。
由于我之前主要是学习java的开发,所以可能学习中会更多的与java进行比较。
在控件与视图这一部分,我感觉Xcode的开发环境还是相当的友好的,我以前并没有深入地学习过Andrew的开发,只进行过一些基础的学习。但是也能清楚地感觉到ios在这一方面做了多么大的功夫,使用Xcode的故事板storyboard与代码结合的方式进行开发,storyboard中在各个界面(视图)之间的跳转十分清晰明了。而每个视图中的内容与各个视图之间跳转的细节问题又可以在代码中清晰反映,使得开发起来思路清晰,游刃有余。
经过这一部分的学习,我觉得各个控件的使用都比较地简单,不需要多做解释。
而我主要记录一下我觉得比较经常用到的一小部分而已。
一、TableView的使用
我觉得TableView可能会是我以后使用得最多的控件之一,他本身的功能十分强大,经过合理地利用可以做到很多事情,而我主要介绍一下几个最基本的用法。
1.在storyboard故事板中拖入TableViewController视图控制器,再拖入TableViewCel。
2.创建TableViewController的控制类,该类必须继承自UITableViewController,如下:
#import <UIKit/UIKit.h>
//必须继承自UITableViewController
@interface ProvincesController : UITableViewController<UITableViewDataSource,UITableViewDelegate>
@property (nonatomic,strong) NSDictionary* dataDict;
@property (nonatomic,strong) NSArray* dataList;
@end
3.设置TableViewController的控制类,如下图:
4.设置TableViewCell的ID属性,目的是为了能再视图控制类中获取该元素,如下图:
5.在视图控制器的控制类中编写代码,关于表格的代码如下:
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
//返回该表格的节数
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
//返回该节中有多少行
return [self.dataList count];
}
//定义表格中各行中的具体内容。
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//通过故事板中定义的TableCell的ID来找到需要的cell
static NSString* cellIdentifier = @"CellIdentifier";
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
cell.textLabel.text = [dataList objectAtIndex:indexPath.row];
return cell;
}
二、使用segue进行视图的跳转
实现各视图的跳转有几种方式,而我使用的是segue的方式,下面介绍我的实现方式,可能不是最好的方式。
1.在故事板storyboard中创建视图的跳转segue,这里举的例子是,点击表格中的某一行,跳转到该行的详细信息视图。按住control按键,点击TableViewCell拉取到另外一个视图控制器TableViewController上并松开鼠标,选择Accessory Action-->show方式连接,如图:
2.设置segue的ID属性,为了可以在控制类中定位到该跳转并进行处理:
3.在视图控制类ProvinceController中覆盖方法(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
//通过故事板storyBoard中的segueID,定位视图的跳转。
if ([segue.identifier isEqualToString:@"ShowSelectedProvince"]) {
//segue.destinationViewController可以获取目标视图的视图控制器。
CitiesController* citiesController = segue.destinationViewController;
NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row];
NSString* selectedName = [self.dataList objectAtIndex:selectedIndex];
//初始化目标视图中相关的控件。
citiesController.dataList = [self.dataDict objectForKey:selectedName];
citiesController.title = [self.dataList objectAtIndex:selectedIndex];
}
}