【问题标题】:How can i know which button is clicked? Objective C我怎么知道点击了哪个按钮?目标 C
【发布时间】:2009-10-08 01:58:58
【问题描述】:

我在作业中执行 Presence1,这需要我构建一个多屏幕应用程序。 我有两个 ViewController,vc1 和 vc2。在 vc1 中,我有两个按钮。我对它们使用相同的方法,它们的标题相同。

我的问题是,当我更改为 vc2 时,我如何知道在 vc1 中单击了哪个按钮?

有一个话题告诉我,当我点击按钮时,我应该得到鼠标的位置 (x,y),但我认为它不太好。

【问题讨论】:

    标签: iphone cocoa-touch uikit button action


    【解决方案1】:

    上面的答案会起作用。如果您不想为按钮保留插座,您可以在界面生成器中为它们分配标签。例如,您将按钮 1 的标记值分配为 1,将按钮 2 的标记值分配为 2。然后在代码中

    -(void)onButtonClick:(id)sender {
        if(sender.tag == 1) {
            //respond to button 1
        } else if(sender.tag == 2) {
            //respond to button 2
        }
    }
    

    【讨论】:

    • 哇,很简单。我不知道。但是出了点问题,我收到一个错误:“请求成员'标签'在不是结构或联合的东西中”。我还需要做点别的吗?
    • 啊,抱歉,因为 sender 是一个 id,所以不能使用属性表示法。改用 [sender tag] 或将签名更改为 -(void) onButtonClick:(UIButton*) sender.
    【解决方案2】:

    如果您有两个NSButton 属性,例如:

    @interface ViewControllerOne : NSViewController
    {
        NSButton *goButton;
        NSButton *stopButton;
    }
    
    @property(nonatomic, retain) NSButton *goButton;
    @property(nonatomic, retain) NSButton *stopButton;
    
    -(void)onButtonClick:(id)sender;
    
    @end
    

    然后你可以将发送者与按钮指针进行比较:

    -(void)onButtonClick:(id)sender
    {
        if (sender == goButton) {
        }
    
        else if (sender == stopButton) {
        }
    }
    

    这就是你所追求的吗?

    【讨论】:

    • 哦,如果我用 UIButton 替换 NSButton 会好吗?有一些问题...
    • 上面的例子在 Cocoa (Mac SDK) 和 Cocoa touch (iPhone SDK) 方面应该非常相似
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2012-07-15
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多