2009-10-08 90 views
2

我正在做Presence1的作业,这需要我构建一个多屏应用程序。 我有两个ViewController,vc1和vc2。在vc1中,我有两个按钮。我对他们使用相同的方法,他们的标题是相同的。我怎么知道哪个按钮被点击? Objective C

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

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

回答

1

如果你有两个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) { 
    } 
} 

是你以后在做什么?

+0

噢,如果我的UIButton替换NSButton,这将是确定?有一些问题... – Khoa

+0

上面的例子应该非常类似于Cocoa(Mac SDK)和Cocoa touch(iPhone SDK) –

4

上面的答案是可行的。如果您不想为按钮保留插座,则可以在界面构建器中为它们分配标签。作为一个例子,可以分配按钮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 
    } 
} 
+0

哇,这很简单。我不知道。但有一些错误,我收到了一个错误:“请求会员'标签'的东西不是结构或工会”。我还需要做点别的吗? – Khoa

+1

啊,对不起,因为发件人是一个ID,你不能使用财产符号。使用[发件人标签],或将签名更改为 - (void)onButtonClick:(UIButton *)发件人。 – Elfred

相关问题