Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 设置UILABEL的初始值_Objective C_Ios - Fatal编程技术网

Objective c 设置UILABEL的初始值

Objective c 设置UILABEL的初始值,objective-c,ios,Objective C,Ios,我正在尝试创建一个简单的测验应用程序(我是一个初学者),当我启动这个应用程序时,我想要一个UILabel来显示第一个问题(一系列问题)。我在设置初始值时遇到了一些问题 我做了几次尝试,都没有成功。我在QuizAppDelegate.h文件中声明我的UILabel,如下所示: IBOutlet UILabel * questionField; 在main.m文件中,我尝试了以下操作: - (id)init { [super init]; questions = [[NSMu

我正在尝试创建一个简单的测验应用程序(我是一个初学者),当我启动这个应用程序时,我想要一个UILabel来显示第一个问题(一系列问题)。我在设置初始值时遇到了一些问题

我做了几次尝试,都没有成功。我在QuizAppDelegate.h文件中声明我的UILabel,如下所示:

 IBOutlet UILabel * questionField;
在main.m文件中,我尝试了以下操作:

- (id)init {

    [super init];

    questions = [[NSMutableArray alloc] init];

    // Not working
    questionField = [[UILabel alloc] init];
    [questionField setText:@"Hello"];

    // Working
    NSLog(@"Hello");

    [self defaultQuestions];
    // [self showQuestion];

    return self;
}
我在QuizAppDelegate中尝试过的另一件事是:

@property (nonatomic, retain) IBOutlet UILabel *questionField;

- (void)changeTitle:(NSString *)toName;
在.m文件中:

@synthesize questionField;

- (id)init {

    [super init];

    questions = [[NSMutableArray alloc] init];

    // Not working
    [self changeTitle:@"Hello"];

    // Working
    NSLog(@"Hello");

    [self defaultQuestions];
    // [self showQuestion];

    return self;
}

-(void)changeTitle:(NSString *)toName {
    [questionField setText:toName];
}
关于如何解决这个问题的任何提示都将是非常棒的


//Anders

如果以编程方式创建标签,则必须将标签添加到视图中:

[self.view addSubview:questionField];
这假设您有一个
ViewController
。如果没有,并且您直接在
AppDelegate
中执行此操作(顺便说一句,这是一个非常糟糕的主意),则执行此操作

[self.window addSubview:questionField];
如果在IB中创建,请确保设置了连接


您应该而不是在IB中添加UILabel并以编程方式实例化它。仅在以编程方式创建时调用
alloc
。否则,如果使用IB,请跳过该部分。您已经使用xib创建了它。

如果您是以编程方式创建标签,则必须将标签添加到视图中:

[self.view addSubview:questionField];
这假设您有一个
ViewController
。如果没有,并且您直接在
AppDelegate
中执行此操作(顺便说一句,这是一个非常糟糕的主意),则执行此操作

[self.window addSubview:questionField];
如果在IB中创建,请确保设置了连接


您应该而不是在IB中添加UILabel并以编程方式实例化它。仅在以编程方式创建时调用
alloc
。否则,如果使用IB,请跳过该部分。您已经用xib创建了它。

我怀疑您没有正确创建Interface Builder布局-或者您错过了所有控件,或者更可能的是,您没有将该控件连接到您头文件中的
问题字段
出口


您需要将UILabel视图拖到主视图中,然后将其连接到头文件中的正确行。

我怀疑您没有正确创建Interface Builder布局-或者您错过了所有控件,或者更可能的是您没有将该控件连接到
问题字段
出口在yout头文件中


您需要将UILabel视图拖到主视图中,然后将其连接到头文件中的正确行。

您根本不应该使用
main.m
。事实上,几乎可以肯定的是,你不应该用它做任何事情。尝试创建一个
UIViewController
子类,并用它练习测验。(将UILabel添加到IB文件中,然后连接插座。)也许在练习时使用基于视图的应用程序模板。

您根本不应该使用
main.m
。事实上,几乎可以肯定的是,你不应该用它做任何事情。尝试创建一个
UIViewController
子类,并用它练习测验。(将UILabel添加到IB文件中,然后连接插座。)也许在练习时使用基于视图的应用程序模板。

希望您没有将代码实际放入
main.m
。在iOS上,您很少修改该文件

由于您在AppDelegate中执行所有操作,因此让我们将其保留在那里(而不是创建新的
UIViewController
)。让我们从基础开始

将标签添加为实例变量

.h
文件的大括号内正确执行此操作,请将

IBOutlet UILabel * questionField;
然后,声明相应的属性,并确保在
.m
文件中合成它

@property (nonatomic, retain) IBOutlet UILabel *questionField;
@synthesize questionField    // in the .m file

在界面生成器中添加UILabel

打开
main窗口.xib
。将UILabel从库拖动到表示应用程序窗口的窗口。然后从AppDelegate对象中控制拖动(Xcode 4中左侧的第三个图标;它将在IB 3的文档窗口中标记)。您将看到出现一个小的黑色窗口,选择名为
questionField
的选项进行连接

有关IB中的屏幕截图以及如何建立连接,请参阅。这同样适用于Xcode 4


更改文本

您不需要单独的方法来更改文本,只需修改标签的
text
属性即可

选择将在应用程序启动时调用的方法(
ApplicationIDFinishLaunching:WithOptions:
是执行此操作的好地方),并输入以下代码:

questionField.text = @"Hello";
就这样


代码

QuizAppDelegate.h


希望您没有真正将代码放入
main.m
。在iOS上,您很少修改该文件

由于您在AppDelegate中执行所有操作,因此让我们将其保留在那里(而不是创建新的
UIViewController
)。让我们从基础开始

将标签添加为实例变量

.h
文件的大括号内正确执行此操作,请将

IBOutlet UILabel * questionField;
然后,声明相应的属性,并确保在
.m
文件中合成它

@property (nonatomic, retain) IBOutlet UILabel *questionField;
@synthesize questionField    // in the .m file

在界面生成器中添加UILabel

打开
main窗口.xib
。将UILabel从库拖动到表示应用程序窗口的窗口。然后从AppDelegate对象中控制拖动(Xcode 4中左侧的第三个图标;它将在IB 3的文档窗口中标记)。您将看到出现一个小的黑色窗口,选择名为
questionField
的选项进行连接

有关IB中的屏幕截图以及如何建立连接,请参阅。这同样适用于Xcode 4


更改文本

你不需要sepa