我目前正在学习来自Java世界的ObjC和Cocoa编程。 为了测试我目前的技能和学习进度,我正在从头开始创建一个小型计算器应用程序(OSX而不是iOS)。
我的用户界面有10个数字按钮0-9等。
我的第一个想法是,因为动作收到了发件人的参考,所以做出一个动作
比如-(IBAction)captureDigit:(id)sender
,然后从按钮标题中抓取数字。
但是界面构建器只允许动作与看起来的一个发送者连接。
所以我最终在我的控制器中创建了10个captureDigit动作。
我的问题: 是某种可能的第一种选择吗?我想过以编程方式添加动作(这可能吗?)到按钮,但是我必须将所有数字按钮作为插座添加到我的控制器。
奖金问题: NSButton可以保持某种不可见的价值吗?在文档中找不到这个。 也许这会违反MVC模式,因为UI会知道特定于应用程序的数据?
感谢您提前做出任何有用和善意的答复,我还在学习
答案 0 :(得分:4)
如果您控制 - 从发件人拖动到目标,您可以将许多发件人连接到一个目标/操作,这样就不会有问题。
写下您的红利问题,任何NSView都有一个整数tag
,您可以在Interface Builder中设置它。这是区分多个相似视图的便捷方式。
答案 1 :(得分:2)
您绝对可以将多个按钮连接到单个操作。此外,您可以使用任何对象的tag
字段为其提供“幕后”值。
答案 2 :(得分:0)
完全可以向单个控制器添加任意数量的操作。 Interface Builder如何阻止您这样做?
你可以在你的控制器中有一个NSDictionary实例,你可以在其中将NSButtons与你想要的任何数据相匹配。
答案 3 :(得分:0)
为了方便起见,在IB中创建一个按钮并从NSButton拖动到File的所有者,然后显示我们可以发送给NSButton的所有方法,然后选择captureDigit:。现在复制并粘贴按钮更改标题,复制并粘贴在IB中保持连接并使用标记字段作为costique,nitrex已经说过了。