IBAction 与按钮连接但需要一个 void
Posted
技术标签:
【中文标题】IBAction 与按钮连接但需要一个 void【英文标题】:IBAction connected with button but need a void 【发布时间】:2012-01-07 07:44:09 【问题描述】:我有 i IBAction,它与 .xib 中的一个按钮相连。但是对于一个动作需要这个代码;
- (void) reportScore: (int64_t) score forCategory: (NSString*) category
GKScore *scoreReporter = [[GKScore alloc] initWithCategory:category];
scoreReporter.value = counter;
[scoreReporter reportScoreWithCompletionHandler: ^(NSError *error)
[self callDelegateOnMainThread: @selector(scoreReported:) withArg: NULL error: error];
NSLog(@"Nice: %d", counter);
];
有没有办法将我的按钮与 void 连接起来?或者类似的东西?
- (IBAction) subScore
//data
【问题讨论】:
void 和 IBAction 是一回事。 IBAction 只是头文件的一个标记,告诉 IB 一个动作可以连接到方法。 【参考方案1】:IBAction
(and IBOutlet
) 只是用来让 XCode 的 Interface Builder(IB
) 知道有一个函数存在。如果你想使用void
,可以,但是你不会得到 Interface Builder 中显示的功能。
IBAction 是一个特殊的关键字,仅用于告诉 Xcode(Interface Builder) 将方法视为目标-动作连接的动作。 IBAction 被定义为 void。
IBOutlet 是一个特殊的关键字,仅用于告诉 Xcode(Interface Builder) 将对象视为出口。它实际上被定义为无,因此在编译时没有任何影响。
您可以将函数(使用void
定义,注意IBAction
也可以,但这里不需要)设置为您的按钮目标,如下所示:
[yourButton addTarget:self action:@selector(yourButtonFunction:) forControlEvents:UIControlEventTouchUpInside];
通常,如果您以编程方式创建代码(不使用 XCode 的 Interface Builder),则不再需要 IBOutlet
或 IBAction
。 ;)
【讨论】:
以上是关于IBAction 与按钮连接但需要一个 void的主要内容,如果未能解决你的问题,请参考以下文章
带有 IBAction 的按钮导致“无法连接操作,目标类 NSNibExternalObjectPlaceholder 不响应 -action”错误