這兩天因爲有點事情,重新拿起了一下iOS開發,好久沒碰過了,用起來這種集成開發環境還是XCode用得比較舒服,個人感覺比VS要好一些,當然,VS也挺不錯,只是在win下面程序做得少,沒什麼發言權,至於eclipse,和這兩個比起來,我覺得還是差距挺大的。
自定義UITableViewCell
UITableView估計是iOS最常用的控件了,系統默認的那些式樣早就看膩了,總想弄點新鮮的,而UITableView中最好弄新鮮的就是裏面的Cell了,Cell可以自定義成你喜歡的任何樣子,裏面可以添加你想添加的任何控件。
自定義UITableViewCell分成以下幾步走:
-
新建一個類,繼承自
UITableViewCell
,比如叫CustomCell
-
新建一個
Empty
的User Interface
,比如叫CustomCell.nib
-
打開CustomCell.nib,從右邊下面拖入一個
UITableViewCell
控件進去 - 在這個控件中放入你想放入的任何控件,比如UILabel,UIBUtton,ImageView等等,隨便放。
-
選擇
UITableViewCell
控件,打開右上方的Identity inspector
,將class選擇爲CustomCell
-
選擇
UITableViewCell
控件,打開右上方的Attributes inspector
,將Identity設置爲CustomCellIdentifier
-
打開CustomCell.h,將你剛剛添加的控件在這裏設置成
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應該給他的數據。
聽上去挺繞的,多看看程序就明白了,編程這東西沒什麼捷徑,還是多看代碼才行。