0

私はここでobjective-cを使用して何かをしてきましたが、私はこの言語の初心者であり、それが私がしたことです:

私の最初のビューの制御下にある「firstviewclass」という名前のクラスがあります。このビューには、ユーザーが数字を入力するテキストフィールドがあります。テキストフィールドは、「setNumber」という名前の firstviewclass.h にあります。2番目のビューを制御する「secondviewclass」という名前の別のクラスがあり、このビューにはsecondviewclass.hにあるラベルがあり、ユーザーがテキストフィールドに入力した値をこのラベルに受け取るようにしたい最初のビューですが、iOSシミュレーターでテストすると、テキストフィールドに入力した数字がラベルに0として表示されます...どうしたらいいのか本当にわかりません!

私のコード:

firstviewclass.h:

#import <UIKit/UIKit.h>

@interface firstviewclass : UIViewController

@property (strong, nonatomic) IBOutlet UITextField *setNumber;

- (IBAction)gotonextview:(id)sender;

@end

secondviewclass.h:

#import <UIKit/UIKit.h>
#import "firstviewclass.h"

@interface secondviewclass : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *labelthatrecivesthetextfieldvalue;

@end

secondviewclass.m:

#import "secondviewclass.h"
#import "firstviewclass.h"

@implementation secondviewclass
@synthesize labelthatrecivesthetextfieldvalue;


-(void)viewDidLoad{
    [super viewDidLoad];

    firstviewclass *object = [[firstviewclass alloc] init];

    NSString *string = [[NSString alloc] initWithFormat:@"%i", [object.setNumber.text intValue]];

    labelthatrecivesthetextfieldvalue.text = string;

}

@end
4

3 に答える 3

1

secondviewclass の viewDidLoad では、firstviewclass の新しいインスタンスを作成してから、ラベルのプロパティにアクセスしています。それを何も設定していないので、常にゼロを返します。

gotoextview メソッドの実装を投稿できますか?

編集:

最初のView Controllerからlabelプロパティを設定する必要があると思います。gotoextview メソッドに次の行を追加します。

secondviewclass.labelthatrecivesthetextfieldvalue.text = self.setNumber.text;

私はあなたの命名スキームで少し迷っていることを認めますが、それはうまくいくかもしれません.

于 2012-07-15T21:41:06.133 に答える
1

どのようにラベルの設定を開始していますか? からviewDidLoad? もしそうなら、あなたは何も設定していないので、0が正しいでしょうobject.setNumber.text。また、最初のviewControllerからデータを引き継いでいません。2 番目の viewController に番号を知らせる必要があります。でこの値を設定してNSUserDefaultsから、2 番目の viewController で、その値をデフォルトからロードしてみてください。

于 2012-07-15T21:43:27.150 に答える
1

まず、プロパティやインスタンス変数に名前を付けないことを強くお勧めしますsetSomething。常にセッターを呼び出そうとしているように見えるため、コードを読んでいる人は頭痛の種になります。また、クラス名を大文字にしてください。

実際の問題はviewDidLoad、のインスタンスを作成し、firstviewclasssetNumber から値を取得しようとしていることです。これは、ユーザーが何かを入力する前のことです。

また、NIB をロードするのではなく、自分でそのクラスをインスタンス化しているため、setNumberアウトレットfirstviewclassはおそらくどこにも行きません。


編集(ああ、ストーリーボード、d'oh):

ストーリーボードの場合、setNumber テキスト フィールドの値を 2 番目のビューに渡す必要があります。

まずはfirstviewclass *object = [[firstviewclass alloc] init];ラインを外します。

次に、最初のビュー コントローラのprepareForSegueメソッドで、setNumberテキスト フィールドの値を 2 番目のビュー コントローラのプロパティに渡し、そこから (たとえば でconfigureView) 使用できます。

Apple の Storyboard チュートリアルを実行することをお勧めします。これは、何をする必要があるかを正確に示しています。現在問題が発生している次のビュー コントローラーにデータを渡す手順は、こちらです。

于 2012-07-15T21:44:11.533 に答える