这两天因为有点事情,重新拿起了一下iOS开发,好久没碰过了,用起来这种集成开发环境还是XCode用得比较舒服,个人感觉比VS要好一些,当然,VS也挺不错,只是在win下面程序做得少,没什么发言权,至于eclipse,和这两个比起来,我觉得还是差距挺大的。

自定义UITableViewCell


UITableView估计是iOS最常用的控件了,系统默认的那些式样早就看腻了,总想弄点新鲜的,而UITableView中最好弄新鲜的就是里面的Cell了,Cell可以自定义成你喜欢的任何样子,里面可以添加你想添加的任何控件。

自定义UITableViewCell分成以下几步走:

UITableViewCell

  • ,比如叫

CustomCellEmpty

User Interface

  • ,比如叫

CustomCell.nibUITableViewCell

  • 控件进去
  • 在这个控件中放入你想放入的任何控件,比如UILabel,UIBUtton,ImageView等等,随便放。

UITableViewCell

  • 控件,打开右上方的

Identity inspector

  • ,将class选择为

CustomCellUITableViewCell

  • 控件,打开右上方的

Attributes inspector

  • ,将Identity设置为

CustomCellIdentifierIBOutlet

  • 变量。

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];

MKMapViewaddAnnotation方法来添加大头针。

关于Delegate的设计和使用


Objective-C的亮点有很多,丰富的数据结构是之一,但是Delegate,也就是代理,或者说是委托吧,是我接触obj-C以后才用得多起来的,别的语言也有这个功能,但是obj-C把委托这种设计模式浸透到语言和她的cocoa框架本身去了,到处都使用着Delegate,当你做了一段时间的iOS或者Mac开发以后,会不知不觉的开始使用Delegate,而且你会觉得使用了Delegate的程序看起来更优美,耦合度似乎也更低一些。Delegate的使用,要说的很多,简单来说,如果事务的逻辑过程类似于以下这个过程,你就可以考虑使用委托了。

A类要B类做一件事情,比如下载一个页面,由于A不知道B什么时候能够完成,所以使用了一个委托,当B完成这个事务以后,会通过委托来调用A类的一个方法,从而A知道B做完了这件事并且获取到了B应该给他的数据。

听上去挺绕的,多看看程序就明白了,编程这东西没什么捷径,还是多看代码才行。