这两天因为有点事情,重新拿起了一下iOS开发,好久没碰过了,用起来这种集成开发环境还是XCode用得比较舒服,个人感觉比VS要好一些,当然,VS也挺不错,只是在win下面程序做得少,没什么发言权,至于eclipse,和这两个比起来,我觉得还是差距挺大的。
自定义UITableViewCell
UITableView估计是iOS最常用的控件了,系统默认的那些式样早就看腻了,总想弄点新鲜的,而UITableView中最好弄新鲜的就是里面的Cell了,Cell可以自定义成你喜欢的任何样子,里面可以添加你想添加的任何控件。
自定义UITableViewCell分成以下几步走:
UITableViewCell
- ,比如叫
CustomCell
Empty
- 的
User Interface
- ,比如叫
CustomCell.nib
UITableViewCell
- 控件进去
- 在这个控件中放入你想放入的任何控件,比如UILabel,UIBUtton,ImageView等等,随便放。
UITableViewCell
- 控件,打开右上方的
Identity inspector
- ,将class选择为
CustomCell
UITableViewCell
- 控件,打开右上方的
Attributes inspector
- ,将Identity设置为
CustomCellIdentifier
IBOutlet
- 变量。
CustomCell.nib
- 中
ViewCell
就自定义好了,在tableView
中-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
这个回调方法中,按照普通的Cell进行操作,只要将本来的UITableViewCell
改成CustomCell
,就可以了。
iOS地图的简单操作
iOS地图虽然升级成苹果地图以后遭到不少人的诟病,但是苹果的API设计一直都很不错,简单易懂,并且使用起来很方便,再加上Xcode这个神器,感觉非常棒。
MapKit
- ,
CoreLocation
- 这两个framework加入到项目中,然后记得在使用map的文件中import这两个
.h
- 文件
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
- 添加一个MapView用来显示地图
MKMapView *mapView;
- 初始化MapView并添加到controller的view中,其中,mapType表示是显示普通视图还是卫星图,showUserLocation表示是否显示当前用户坐标
mapView = [[MKMapView alloc] initWithFrame:CGRectMake(5, 5, 310, 200)];
mapView.showsUserLocation = YES;
mapView.mapType = MKMapTypeStandard;
[self.view addSubview:mapView];
- 好了,最简单的地图使用就这样,打开以后就会显示地图了,当然,这里还是显示的世界地图,如果要定位到某一个区域的话,还需要添加下面的代码
CLLocationCoordinate2D coords = CLLocationCoordinate2DMake(39.915352,116.397105);
float zoomLevel = 0.02;
MKCoordinateRegion region = MKCoordinateRegionMake(coords,MKCoordinateSpanMake(zoomLevel, zoomLevel));
[earthquakeMap setRegion:[earthquakeMap regionThatFits:region] animated:YES];
MKMapView
的addAnnotation
方法来添加大头针。
关于Delegate的设计和使用
Objective-C
的亮点有很多,丰富的数据结构是之一,但是Delegate
,也就是代理,或者说是委托吧,是我接触obj-C
以后才用得多起来的,别的语言也有这个功能,但是obj-C
把委托这种设计模式浸透到语言和她的cocoa框架本身去了,到处都使用着Delegate
,当你做了一段时间的iOS或者Mac开发以后,会不知不觉的开始使用Delegate
,而且你会觉得使用了Delegate
的程序看起来更优美,耦合度似乎也更低一些。Delegate
的使用,要说的很多,简单来说,如果事务的逻辑过程类似于以下这个过程,你就可以考虑使用委托了。
A类要B类做一件事情,比如下载一个页面,由于A不知道B什么时候能够完成,所以使用了一个委托,当B完成这个事务以后,会通过委托来调用A类的一个方法,从而A知道B做完了这件事并且获取到了B应该给他的数据。
听上去挺绕的,多看看程序就明白了,编程这东西没什么捷径,还是多看代码才行。