2011-07-12 5 views
2

私は位置と逆ジオコードを計算して郵便番号を取得するビューを1つ持っています。それから私はその郵便番号に基づいて天気の結果を表示したい別のビューを呼び出します。ユーザーがページをオンにする]ボタンをクリックすると、私はこれを行う最初のビューコントローラでなぜこのように2つのView Controller間で変数を転送できないのですか?

- (IBAction) showMyWeather : (id)sender { 

WeatherApp *weather = [[WeatherApp alloc] initWithNibName:nil bundle:nil]; 
weather.zipcode = placemarkZip; //this one seems not to be doing the job 
weather.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:weather animated:YES]; 

} 

そしてWeatherAppで、私は今、このビューコントローラ内で宣言された郵便番号を、読みたいです。 h:

@interface WeatherApp : UIViewController{ 

IBOutlet UIButton *done; 
MKPlacemark *zipcode; 
} 

@property (nonatomic, retain) MKPlacemark *zipcode; 

このコードを使ってWeatherAppにこの郵便番号を転送するにはどうすればよいですか?ありがとう!

+0

ブレークポイントを追加すると、placemarkZip変数は正しいですか?あなたがそれを設定するとき、郵便番号のメンバーの価値は何ですか?その後、天気予報を公開することを忘れないでください.ModalViewController – Johnmph

+0

あなたはどうやってそれが設定されないことを知っていますか?私はどこでブレークポイントを追加したのか、それともnsloggedしたのでしょうか? – Ahmed

+0

True - 正しい値ではありませんでした... placemarkzipは実際に目印全体でした。一般的に(被写体から逸脱してごめんなさい...) - そのような他のオブジェクトに情報を渡すのは大丈夫ですか? WeatherAppオブジェクトに入ると混乱する原因ですが、一般的なクラスですが、郵便番号は突然あります。(私は意味を成していません...)。再度、感謝します! – TommyG

答えて

0

はい、これは新しいオブジェクトに情報を渡すための良い方法です。

また、あなたが

- (id)initWithZipCode:(NSString *)zip; 

ようWeatherAppのカ​​スタム初期化子を作成することができ、その後、実装ファイルで、それはこのようなことができます:

- (id)initWithZipCode:(NSString *)zip 
{ 
    self = [super init]; 
    [self setZipcode:zip]; 
    return self; 
} 

最後に、次のようなクラスをインスタンス化できso:

- (IBAction)showMyWeather:(id)sender 
{ 
    WeatherApp *weather = [[WeatherApp alloc] initWithZipCode:placemarkZip]; 
    [weather setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
    [self presentModalViewController:weather animated:YES]; 
    [weather release]; // No longer needed with ARC... just sayin' 
} 

最後に、上記のように情報を入力すると、なぜinitWithNibName:bundle:を使用しているのかという疑問が生じます。 nilを両方に渡す場合は、[[WeatherApp alloc] init]を使用しないでください。

関連する問題