1

我遇到了xcode的问题。我是 object-c 和 xcode 的菜鸟,所以......请帮忙。

我有 2 个视图控制器:ViewController (with .m/.h)HighScores (with .m/.h).

在 HighScores 中,我放置了一个名为 first 的标签。在ViewController我有一个UITextField名为 *textField。我希望 textField 中的文本在我输入文本时出现在标签中,并且当已经玩过的游戏得分高于标签中已经存在的文本(“第一”)时。

所以,

这就是我的HighScore.h的样子:

#import <UIKit/UIKit.h>

@interface HighScores: UIViewController {

IBOutlet UILabel *first;

}

@end

这是ViewController.m

#import "ViewController.h"
#import "HighScore.h"

...

NSString *myString = [HighScores.first];

if (score.text > myString) {

    NSString *string = [textField text];
    [HighScores.first setText:string]

但是xcode说当我在点'.'之后输入“first”时出现错误......如果我想让xCode识别来自HighScore的“first”标签,我该怎么UIViewControllerVewController UiViewController

谢谢!

4

2 回答 2

2

在您的代码中,“first”是一个 UILabel ,它将在 highScores 视图被加载时生成。因为它是一个 IBOUTlet。其次,您正在尝试使用类名进行访问。首先创建一个 HighScore 类的实例,然后尝试访问标签“first”。

#import <UIKit/UIKit.h>

@interface HighScores: UIViewController
@property (nonatomic , strong)UILabel *firstLabel  ;

@end

@implementation HighScores
 - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
{
 self.firstLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 50)];
 [self.view addSubview self.firstlabel];
}

@end

比在 ViewController.m 中

HighScore * highscoreObject = [[HighScore alloc]init];

NSString *mystring = [highscoreObject.firstLabel text];

if (score.text > mystring) {

[highscoreObject.firstLabel setText:score.text];

{
于 2013-03-08T12:10:00.377 回答
0

让我们使用通知,如果您在这里感到困惑:在这种情况下,您也可以使用 IBoutlet。我们将抛出一个带有要设置的字符串的通知,并在 HighScores 中读取通知并使用字符串 send 设置标签。

在 ViewController.m 中

if (score.text > myString) {

NSString *string = [textField text];

[[NSNotificationCenter defaultCenter] postNotificationName:@"update" object:string];
}

@interface HighScores: UIViewController
@property (nonatomic , strong) IBOutlet  UILabel *firstLabel  ;

@end

在 HighScores.m 中

@implementation HighScores

- (void)viewDidLoad
{
 [super viewDidLoad];

[[NSNotificationCenter defaultCenter] removeObserver:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changetext:) name:@"update" object:nil]; 

}

- (void) changetext:(NSNotification *)notification {
 NSLog(@"Received"); 
   self.firstLabel.text = [notification object];
}
于 2013-03-11T11:05:01.603 回答