2

我一直在这里使用objective-c做一件事,但我是这门语言的初学者,这就是我所做的:

有一个名为“firstviewclass”的类,它在我的第一个视图的控制中,在这个视图中有一个用户输入数字的文本字段。文本字段位于名为“setNumber”的 firstviewclass.h 中。还有另一个名为“secondviewclass”的类控制第二个视图,在这个视图中有一个标签位于 secondviewclass.h 中,我希望这个标签接收用户在文本字段中输入的值第一个视图。我的代码:

第一视图类.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 实例化 anUILabel并使用IBOutlet关键字获取它的引用之后,您然后尝试使用UILabel指针指向为 a 分配和实例化的内存中的空间NSString,这就是您遇到此问题的原因。您可能还确实收到了有关您尝试执行的任务的警告:

labelthatrecivesthetextfieldvalue = string;

您应该始终尝试修复警告。

你想要什么:

您只是希望UILabel显示NSString您刚刚创建的内容,为此您应该使用UILabel'stext 属性。

于 2012-07-14T19:22:42.560 回答
3

您收到该错误是因为您将标签指向字符串。它们属于不同的类别,因此这是不允许的。您真正的意思是您希望标签上的文本采用字符串的值。所以需要设置标签的文本字段:

labelthatrecivesthetextfieldvalue.text = string;

对于我之前的错误答案,我深表歉意。

顺便说一句,您还应该考虑使用 camelCase 命名变量。这是objective-c的约定。即labelThatRecievesTheTextFieldValue改为调用它。这不会影响您的代码工作的能力,只是约定。

于 2012-07-14T19:18:46.237 回答