iOS允许开发人员定义私有IBOutlet。例如,viewController中有几个按钮,我想在“界面”构建器和代码中对这些按钮执行某些操作。但是我不希望其他类访问这些按钮。我可以为这个按钮定义一些“私人”IBOutlets
示例代码:
@interface myViewController : UIViewController<
{
@private:
UIButton *o_Button1;
UIButton *o_Button2;
}
//Can I have these outlets as private???
@property (nonatomic, retain) IBOutlet UIButton *Button1;
@property (nonatomic, retain) IBOutlet UIButton *Button2;
@end
=============================================== ================
得到一个解决方案。希望它会对你有所帮助。
将Abizern和JustSid的想法结合起来,我有这样的解决方案。
<。>文件中的
@interface myViewController : UIViewController
{
@private
IBOutlet UIButton *Button1;
IBOutlet UIButton *Button2;
}
@end
和.m文件
@interface MyViewController ()
@property (nonatomic, retain) UIButton *Button1;
@property (nonatomic, retain) UIButton *Button2;
@end
...
@synthesize Button1, Button2;
感谢Abizern和JustSid的帮助
答案 0 :(得分:8)
在.m文件顶部的类别中添加属性:
@interface MyViewController ()
@property (nonatomic, retain) IBOutlet UIButton *Button1;
@property (nonatomic, retain) IBOutlet UIButton *Button2;
@end
实际上,这就是如何在.h文件中将属性设置为只读,并将其重新声明为.m文件中的readwrite属性 - 这样您就可以拥有私有的setter。
答案 1 :(得分:4)
@interface myViewController : UIViewController
{
@private
IBOutlet UIButton *o_Button1;
IBOutlet UIButton *o_Button2;
}
@end
此代码允许您使插座没有其他人可能访问的属性。
答案 2 :(得分:4)
上面接受的答案存在IB无法看到网点的问题。
我使用的方法是创建一个名为MyViewController-Protected.h的文件,并在其中放置具有私有IBOutlets的类别。在MyViewController.m中包含-Protected.h而不是常规的。
受保护的文件可能如下所示:
// MyViewController-Protected.h
// Protected extensions to MyViewController
#import "MyViewController.h"
@interface MyViewController ()
@property (nonatomic, retain) IBOutlet UIButton *Button1;
@property (nonatomic, retain) IBOutlet UIButton *Button2;
@end
以这种方式定义的IBOutlets仅对包括受保护头文件的类可见。这通常只是班级本身。
一旦类别位于受保护的头文件中,Interface Builder就能找到这些出口。 (对于XCode3,你必须将-Protected.h文件拖到IB,在Xcode4中它将开箱即用)。