首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IBOutlet报关站

IBOutlet报关站
EN

Stack Overflow用户
提问于 2015-03-02 09:37:04
回答 1查看 496关注 0票数 0

在谷歌上搜索了这一困惑之后,我发现放置找出的最佳地点是:

代码语言:javascript
运行
复制
@interface GallantViewController : UIViewController

@property (nonatomic, weak) IBOutlet UISwitch *switch;

@end

但是根据我所说的,现在switch变量在GallantViewController之外是可见的。这不奇怪吗?我认为这种方法是错误的:

代码语言:javascript
运行
复制
@interface GoofusViewController : UIViewController {
    IBOutlet UISwitch *_switch
}

@end

就像这样,动起来就能解决问题。为什么要操作一个按钮,例如来自另一个类的按钮,而不是在GallantViewController中实现它的逻辑

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-02 10:19:43

@interface可以同时出现在.h文件(公共属性)和.m文件(私有属性)中。IBOutlets应该在.m文件中声明。

例如,下面是一个视图控制器的示例.m文件

代码语言:javascript
运行
复制
#import "MainViewController.h"

@interface MainViewController ()
// the following property is not visible outside this file
@property (weak, nonatomic) IBOutlet UIView *someView;  
@end

@implementation MainViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

@end

从技术上讲,@interface文件中的.m是类扩展名(也称为类上的匿名类别),但这并没有实际意义。它只是将私有属性添加到类中的一种方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28806489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档