2011-08-10 6 views
0

UILabelにNSStringを表示できません。以下は、表示されているプログラムの一部です。ボタンがヒットすると、それらの関数が呼び出されます。UILavelのテキストをUINavigationControllerに表示できません

これは、ボタンが押されたときにUIAlertによって呼び出される関数です。ナビゲーションコントローラの2番目のビューにあります。 "location"はNSStringです。

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 

if (buttonIndex == 0) 
{  
    NSString *newString = [[NSString alloc] initWithString:location]; 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:newString forKey:@"keyForLocation"]; 

    FirstViewController *newObject = [[FirstViewController alloc] init]; 
    [newObject updateCurrentLocationLabel:nil]; 
} 
else { 

} 

}

これは、ベースビューのビューコントローラのヘッダと実装ファイルです。それはUILabelと一緒です。

ヘッダファイル

@interface FirstViewController : UIViewController { 
    IBOutlet UILabel *currentLocationLabel; 
} 

@property (nonatomic, retain) UILabel *currentLocationLabel; 
-(IBAction) updateCurrentLocationLabel:(id) sender; 

あなたが最初[[NSUserDefaults standardUserDefaults] synchronize]を呼び出す必要があり、実装ファイル

- (IBAction) updateCurrentLocationLabel:(id) sender { 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    NSString *myString1 = [prefs stringForKey:@"keyForLocation"]; 
    currentLocationLabel.text = [NSString stringWithFormat:@"%@", myString1]; 
} 

答えて

1

alertView:clickedButtonAtIndex:メソッドでは、新しい(FirstViewController)オブジェクトを作成します。このオブジェクトは、おそらくナビゲーションスタックにあるものとは関係ありません。 実際にビュー階層の一部であるビューコントローラでupdateCurrentLocationLabelメソッドを呼び出す必要があります。同じクラスをインスタンス化しても、同じオブジェクトを取得するわけではありません。

+0

OK、どうすれば問題を解決できますか?私が使うはずのメソッドは?私は本当に申し訳ありませんが、私は初心者です、私はこれについてのチュートリアルを探しますが、そこに良いものはありません。 – Jovi

+0

'[(FirstViewController *)self.navigationController.topViewController updateCurrentLocationLabel:nil];' - しかし、オブジェクトの向きとメモリ管理に関する入門的な資料を読むことをお勧めします。初心者レベルのiOSブックでは、あなたのコードは、あなたがまだ非常に基本的なことを理解していないことを示しています。 – omz

+0

私はupdateCurrentLocationLabelにNSLogステートメントを置いていましたが、デバッガのconsolerにそのステートメントがあるようですので、プログラムにメソッドがあると仮定できますか? とはい!私は再び本を読んでいる。明らかに私はいくつかのものを理解していない。 – Jovi

-1

。デフォルトは保存されません。

+0

これは意味がないので、値を更新するたびに定期的な間隔で自動的にユーザーのデフォルトを同期させる必要はありません。既定値がまだディスクに書き込まれていない場合、それらは単にメモリから読み取られます。 – omz

関連する問題