Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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 iOS-UIToolbar在h文件中不工作_Objective C_Ios - Fatal编程技术网

Objective c iOS-UIToolbar在h文件中不工作

Objective c iOS-UIToolbar在h文件中不工作,objective-c,ios,Objective C,Ios,我是开发iOS应用程序的新手。我目前正在制作一个应用程序来更改nib文件 但是,在使用XIB用户界面创建了一个新的UIViewController子类之后,我无法让UIToolbar IBOutlet正常工作 听起来可能很傻,但UIToolbar在头文件中不会变成粉红色/紫色。h: @property (nonatomic, retain) IBOutlet UIToolbar *toolbar; 在.m: @synthesize toolbar = _toolbar; 这导致我无法使用UI

我是开发iOS应用程序的新手。我目前正在制作一个应用程序来更改nib文件

但是,在使用XIB用户界面创建了一个新的UIViewController子类之后,我无法让UIToolbar IBOutlet正常工作

听起来可能很傻,但UIToolbar在头文件中不会变成粉红色/紫色。h:

@property (nonatomic, retain) IBOutlet UIToolbar *toolbar;
在.m:

@synthesize toolbar = _toolbar;
这导致我无法使用UIToolbar

这是我的.h代码:

#import <UIKit/UIKit.h>

@interface pedestrians : UIViewController;

@property (nonatomic, retain) IBOutlet UIToolbar *toolbar;

@end
任何帮助都会很好。谢谢

编辑:

只是尝试添加这样的UIBar按钮,但没有拾取任何UI内容:
该文件中没有名为toolbar的实例变量。使用@property nonatomic,保留IBOutlet UIToolbar*工具栏;不创建实例变量。您需要访问viewdiload中的self.toolbar,或者最好是“u toolbar”。

您编写的代码创建了两个与工具栏相关的内容:来自synthesis语句的名为“u toolbar”的实例变量,以及self.toolbar中的访问器。当不存在名为toolbar的实例变量时,尝试使用该实例变量。可以使用_工具栏,也可以使用self.toolbar。最好是后者,因为它保留了观察键值的功能,并允许更好的继承行为。

我认为不能用分号结束@接口行。你能像下面那样更改你的.h文件代码吗

@interface pedestrians : UIViewController {
}
@property (nonatomic, retain) IBOutlet UIToolbar *toolbar;
@end

您是否连接了IBOutlet属性和nib文件中的工具栏?toolbar-文件的所有者-是。实际上最好在代码中使用self.toolbar,与直接访问ivar相反。他不是在.h中创建ivar,而是在@synthesis中指定_toolbar,这意味着他想使用_toolbar访问self.toolbar。他使用的是现代运行时,ivar是由编译器为他创建的。是的,这意味着他将使用它来代替属性。来自Apple Docs:您可以使用property=ivar表单来指示属性应使用特定的实例变量。在该页的下面是一个使用ivar代替属性的示例:声明属性和合成访问器。这并不意味着他将使用ivar代替属性。这意味着他将使用ivar作为财产。正如您链接的文档所述。换句话说,如果您有权访问合成的getter/setter方法,您将看到使用您命名的ivar,而不是默认变量。您仍然可以选择直接使用合成的ivar,在引用它时只需要使用正确的名称。
@interface pedestrians : UIViewController {
}
@property (nonatomic, retain) IBOutlet UIToolbar *toolbar;
@end