Objective-C

Get current location and city name

1. Add CoreLocation.framework to your project

2. Add CLLocationManagerDelegate to your viewController

3. Initialize CLLocationManager in viewDidLoad

4. Get current location in  the delegate method
- (void)locationManager:(CLLocationManager)managerdidUpdateLocations:(NSArray)locations;


5. Use CLGeocoder to reverseGeocodeLocation

Full Code here

在ViewController 之間傳值

在iOS的開發中,我們經常會使用ViewController來控制每一個畫面的行為,
剛開始的時候最常遇到的問題就是

“怎麼在兩個ViewController之間傳遞資訊”這篇文章中我列出了幾種常見的方法,提供給大家做參考。

1. 透過實體(Instance)傳遞資訊

我們都知道,每一個ViewController 的類別(Class),不管是用Storyboard還是Nib的方式,都要先初始化(alloc + init),然後再透過這些實體(Instance)物件做操作。所以,要在彼此之間傳遞資訊,必須要取得這些實體

如果傳遞的資訊比較簡單,或是傳遞資訊的動作只有一次的時候,透過物件的實體是比較簡單的方式

範例A: 透過 Nib 的方式,取得ViewController2 的實體,傳遞資訊,指定user的值

範例B:在StoryBoard中,透過Segue 取得的實體,傳遞資訊,指定user的值

**2.透過單例(Singleton)物件傳遞** 透過物件的實體來傳遞固然很方便,但是很多時候,資訊的共享並不只存在於兩個ViewController之間,例如這個應用程式的作者資訊、目前登入者的暫存資料等等,應該是在一個共通的地方,每個人都是去同一個地方存取共通的資訊。這時我們就可以透過Singleton的方式,讓資訊傳遞更簡單。
[![](http://3.bp.blogspot.com/-_ivnC4oFHjU/UGvy1U3Z79I/AAAAAAAACUM/3HjhOjMIaxg/s640/blog2.png)](http://3.bp.blogspot.com/-_ivnC4oFHjU/UGvy1U3Z79I/AAAAAAAACUM/3HjhOjMIaxg/s1600/blog2.png)
以下是範例程式碼