2

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

私の最初のビューを制御する「firstviewclass」という名前のクラスがあります。このビューには、ユーザーが数値を入力するテキストフィールドがあります。テキストフィールドは、「setNumber」という名前のfirstviewclass.hにあります。2番目のビューを制御する「secondviewclass」という名前の別のクラスがあります。このビューにはsecondviewclass.hにあるラベルがあり、このラベルがユーザーがテキストフィールドに入力した値を受け取るようにします。最初のビュー。私のコード:

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 = string; //here is where that error appears "incompatible pointer types assigning to 'UILabel *__weak' to 'NSString *__strong'"

}

@end

変更するように言われたことを変更しましたが、シミュレーターでテストすると、テキストフィールドに入力した任意の数値が0としてラベルに表示されます...本当にどうしたらよいかわかりません。

4

2 に答える 2

11

そのはず:

labelthatrecivesthetextfieldvalue.text = string;

フードの下:

xibがインスタンス化され、キーワードUILabelを使用してその参照を取得した後、ポインタを使用して、に割り当てられてインスタンス化されたメモリ内のスペースをポイントしようとしているため、この問題が発生しています。あなたはおそらくあなたがやろうとしたその割り当てについての警告も受けました:IBOutletUILabelNSString

labelthatrecivesthetextfieldvalue = string;

常に警告を修正するようにしてください。

あなたが欲しいもの:

作成したばかりのUILabelを表示するだけで、そのためにはtextプロパティNSStringを使用する必要があります。UILabel's

于 2012-07-14T19:22:42.560 に答える
3

ラベルを文字列にポイントしているため、このエラーが発生します。それらは異なるクラスであるため、許可されていません。本当の意味は、ラベルのテキストに文字列の値を使用させたいということです。したがって、ラベルのテキストフィールドを設定する必要があります。

labelthatrecivesthetextfieldvalue.text = string;

以前の間違った答えをお詫びします。

ちなみに、変数の命名にはキャメルケースの使用も検討する必要があります。これがObjective-cの規則です。つまり、labelThatRecievesTheTextFieldValue代わりにそれを呼び出します。これは、コードが機能する能力には影響せず、慣例にすぎません。

于 2012-07-14T19:18:46.237 に答える