【问题标题】:one Button With Multiple Actions Using StoryBoard in ios在 ios 中使用 StoryBoard 的一个具有多个操作的按钮
【发布时间】:2014-11-26 11:46:38
【问题描述】:

我有三个具有不同操作的按钮。现在我不想为我的按钮创建三个 IBAction。在单个 IBAction 方法中我可以为这三个按钮编写操作。

我是 Xcode 的新手,谁能帮我做这个...

在此先感谢....

【问题讨论】:

  • 只需将多个事件连接到一个 IBAction 处理程序 - 或者它的工作原理是相反的,为一个事件连接多个 IBAction 处理程序。你在哪里被困在做这个程序?

标签: ios objective-c xcode uibutton


【解决方案1】:

这样试试

在 . h文件

@property (strong, nonatomic) IBOutlet UIButton *yourbutton;

在.m

@synthesize yourbutton;

 - (IBAction)yourClicked:(id)sender {

             UIButton *resultebutton= (UIButton*)sender;
              NSString *buttontitle=resultButton.currentTitle;

                    if ([buttontitle isEqual:@"firstBtitle"]) {
                        // perform your 1st button action 
                          //call your method

                    }
                    else if ([buttontitle isEqual:@"secondBtitle"]) {
                        // perform your 2nd button action 


                    }
                    else if ([buttontitle isEqual:@"thirdBtitle"]) {
                        // perform your 3rd button action

                    }
}

【讨论】:

  • 请告诉我你在哪里挣扎。它对我有用
【解决方案2】:

为按钮分配标签,在IBAction方法中,检查Button标签并根据按钮标签做动作。

【讨论】:

  • 如果我喜欢它总是只检查第一个按钮标签。它不检查第二个按钮
  • 写下 if else if 条件并给出不同的标签 id。
【解决方案3】:

如果我理解错了,请纠正我:

您有三个按钮,您希望它们触发相同的 IBAction。 IBAction 本身根据调用它的按钮来决定要做什么。

这听起来像是“发送者”参数的完美示例。

创建这样的东西:

- (IBAction)doSomeAction:(id)sender
{
    if ([sender isEqual:self.buttonOne]) {
        NSLog(@"ButtonOne");
    } else if ([sender isEqual:self.buttonTwo]) {
        NSLog(@"ButtonTwo");
    } else if ([sender isEqual:self.buttonThree]) {
        NSLog(@"ButtonThree");
    }
}

通过发送者,您可以识别调用此方法的按钮。这样,您可以避免使用可能非常烦人的句柄标签。

确保将所有三个按钮都连接到此操作 - 查看连接检查器。这是非常重要的,也是错误的常见来源。如果您删除任何与插座或 IBAction 的连接,还要检查此连接是否在 Storyboard-object 中删除。 如果一切就绪,只需将发件人与按钮的插座进行比较。

【讨论】:

  • 我只是喜欢这样做,但应用程序崩溃了。
  • 对我的帖子做了一点更新。但是查看崩溃消息可能会有所帮助
【解决方案4】:

第 1 步:

在情节提要/XIB 中为所有三个按钮分配不同的标签, 例如。 firstButton 的 tag=1, secondButton 的 tag=2 和 thirdButton 的 tag=3

第 2 步: 像这样定义你的方法并用这个方法绑定你所有的按钮

- (IBAction)buttonAction:(UIButton *)sender
{
    if (sender.tag==1) {
        NSLog(@"First Button");
    } else if (sender.tag==2) {
        NSLog(@"Second Button");
    } else if (sender.tag==3) {
        NSLog(@"Third Button");
    }
}

你的工作已经完成了。

【讨论】:

  • @Sport“我有三个不同动作的按钮”在问题的第一行提到。
  • 它显示错误消息..“在'_strong id类型的对象上找不到属性标签”
  • @iworld 您链接按钮的方式有问题,请参阅stackoverflow.com/a/19641844/1223897 了解该错误。
猜你喜欢
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
相关资源
最近更新 更多