1

変数値が1つのビューから別のビューにどのように渡されるかを理解するのに問題があります。ユーザーが数値を入力するUITextFieldがfirstviewにあります。ユーザーがボタンをタップすると、その数値に2が掛けられ、その結果が2番目のビューのUILabelに表示されます。これは私がこれまでに持っているものです

FirstViewController.h

@interface FirstViewController : UIViewController{
UITextField *numberTextField;
NSNumber *aNumber;
}
@property (nonatomic, retain) IBOutlet UITextField *numberTextField;
@property (nonatomic) NSNumber *aNumber;
-(IBAction)calculate;
@end

FirstViewController.m

@implementation FirstViewController
@synthesize numberTextField,  aNumber;

-(double)doubleNumber{
double number = [numberTextField.text doubleValue] * 2;
return number;
}

-(IBAction)calculate{
self.aNumber = [NSNumber numberWithDouble:[self doubleNumber]];   
}

//more default code continues below

SecondViewController.h

#import "FirstViewController.h"

@interface SecondViewController : FirstViewController{
UILabel *numberLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *numberLabel;
@end

SecondViewController.m

@implementation SecondViewController
@synthesize numberLabel;

- (void)viewDidLoad
{
[super viewDidLoad];
numberLabel.text = [NSString stringWithFormat:@"%@",aNumber];
}
4

4 に答える 4

3

グローバルに価値を保存するための最良かつ簡単な方法

キーワードでオブジェクトを設定します

[[NSUserDefaults standardUserDefaults] setObject:@"Ajay" forKey:@"name"]; 

プロジェクトのどこでもそのオブジェクトを取得するよりも

NSString *name = [[NSUserDefaults standardUserDefaults] objectForKey:@"name"];
于 2012-04-10T04:52:10.470 に答える
0

FirstViewController が SecondViewController をインスタンス化していると想定しています。その場合は、追加のプロパティを使用して aNumber を SecondViewController に渡すだけです。

// add an additional property to the SecondViewController
@property (nonatomic, retain) NSNumber *aNumber;

FirstViewController 内で SecondViewController をインスタンス化するときは、ロードする前にその値を SecondViewController に渡すだけです。

// inside FirstViewController 
SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
secondViewController.aNumber = aNumber;

// inside SecondViewController
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    numberLabel.text = self.aNumber; 
}
于 2012-04-10T00:11:19.990 に答える
0

うーん...ビューとviewControllerを混同しないように注意してください!!!

viewController はビュー以上のものを管理できます。たとえば、コードには、UITextField、UILabel、およびおそらく UIButton があります。これらはすべて、2 つのビューコントローラー (FirstViewController と SecondViewController) によって管理されるビューです。

操作するビューがほとんどない限り、viewController を 1 つだけ使用して、必要な値を UILabel に直接渡すことができます。

- (void)calculateAndPassValue
{
    aNumber = [NSNumber numberWithDouble:[self doubleNumber]];
    numberLabel.text = [NSString stringWithFormat:@"%@",aNumber];
}

それ以外の場合、目標が変数値をあるviewControllerから別のviewControllerに渡す場合。ええと...たとえば、次のように取得する方法はたくさんあります。

  1. ivar の作成。
  2. シングルトンの使用。
  3. データを NSUserDefault に保存します。
  4. ディスク上にデータベースを作成します。

アプリの実行中にデータを管理する必要がある場合は、最初と 2 番目のケースが適しています。将来の使用のためにデータを記憶し、次回の起動時にそれらを取得する場合は、3 番目と 4 番目。

ivar、singleton、NSUserDefault などのキーを検索してみてください。多くの議論やサンプル コードの行が見つかります。

于 2012-04-10T00:29:19.633 に答える
0

セグエを使用して、目的を達成する必要があります。ストーリーボードでセグエを作成し、firstviewcontroller でそれを呼び出します- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender。次に、データを渡すために、渡す値のプロパティを含む secondviewcontroller.h ファイルをインポートしてセットアップします- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

その方法では、次を使用して物を渡すことができます[segue.destinationViewController ###call the setter for the property in your secondViewController.h file###];

これが明確でない場合、またはさらにサポートが必要な場合は、お知らせください。

于 2012-04-10T00:00:09.430 に答える