如何将情节提要中的多个按钮连接到单个动作?
Posted
技术标签:
【中文标题】如何将情节提要中的多个按钮连接到单个动作?【英文标题】:How to connect multiple buttons in a storyboard to a single action? 【发布时间】:2013-04-17 02:41:00 【问题描述】:我目前正在使用 Xcode 4.6,我只是想知道如何在不同的 UIViews 中选择多个按钮,但在单个视图控制器下。 CMD 点击似乎不起作用。我需要这个功能,因为在 Xcode 4.6 中,让 IB 上的两个按钮共享相同操作的唯一方法是一次选择它们,然后将操作拖到您的视图控制器。
我的最终目标是使用 Xcode 4.6 中的情节提要在两个不同的 UIView 上获得两个不同的按钮以匹配相同的操作。有没有办法做到这一点?
编辑:我目前正在使用 Xcode 4.6.1 没有任何运气,升级到 4.6.2。
【问题讨论】:
【参考方案1】:您可以将多个按钮连接到一个操作,而无需一次全部选中。
但是,在创建动作之后,您需要保存包含该动作的源文件,然后 Xcode 才能让您将另一个控件连接到该动作。
我用 Xcode 4.6.2 做到了这一点:
【讨论】:
嗯,我目前正在使用 Xcode 4.6.1,让我看看升级是否能解决这个问题。 你可能还会发现保存后需要等待几秒Xcode才能赶上。 是的,我保存了很多次(我添加到的文件已经存在了很长一段时间的动作)。它在 4.6.1 上从未对我有用。它在 4.6.2 上运行良好。 +1 有时有用的另一件事是文件 > 关闭“ViewController.m”菜单命令(替换当前选定文件的名称;快捷方式是 Control-Command-W)。然后重新打开文件。我发现这经常会导致 Xcode 注意到它忽略的东西。在助手编辑器中,该菜单命令仅在跳转栏设置为“手动”时可用。 但请注意,默认情况下这会将操作连接到控件的“主要操作”事件。在这种情况下,对于 UIButton,它会附加到 Touch up Inside 事件。如果您想为不同的事件附加一个动作(例如,一个 Touch down 事件动作),最好的方法是选择视图本身,选择 Connections 检查器,然后单击所需动作的小 + 按钮,然后拖动到您也想附加它的按钮。【参考方案2】:Swift 3.0 Xcode 8.0+
将所有按钮连接到下面的方法签名。 确保参数 sender 的类型为 UIButton(或 UIButton 的子类),以便连接情节提要中的其余按钮。
@IBAction func dialconfigTapped(_ sender: UIButton)
使用 sender.tag 来识别被点击的按钮。
【讨论】:
【参考方案3】:按照这些步骤进行
1.在视图控制器中创建 IBAction
在.h文件中
-(IBAction)action:(id)sender;
在 .m 文件中
-(IBAction)action:(id)sender
2 。将所有按钮连接到此操作
3 .按照下一张图片给每个按钮一个标签
4 .现在在你的动作函数里面放这些
-(IBAction)action:(id)sender
UIButton *button=(UIButton*)sender;
if(button.tag==1)
//your stuff!
if(button.tag==2)
//your stuff!
if(button.tag==3)
//your stuff!
奔跑吧。
【讨论】:
【参考方案4】:您应该能够在 IB 中做到这一点。在 IB 中,只需将它们指向相关类中的相同 IBAction
。
当动作发生时,如果您想知道从哪个按钮获得了动作,您可以通过读取按钮中的文本或使用 tag
属性来区分 IBAction
方法中的按钮您应该从 IB 设置。
- (IBAction)buttonClicked:(id)sender
NSLog(@"Button pressed: %@", [sender currentTitle]);
NSLog(@"Button pressed: %@", [sender tag]);
【讨论】:
Xcode 4.6 中似乎存在一个错误,但不允许您这样做。对此问题进行了解释,并对已接受的答案进行了评论。 ***.com/questions/5858247/… 但也没有发布解决方案吗? - “刚刚意识到您还可以通过按住 CMD 并选择所有 UIButtons 来多选您在 IB 中创建的所有 UIButtons,然后按住 ctrl 并将其拖动到代码中,它将创建一个所有 UIButtons 连接到它的单个 IBAction。 "这不适合你吗? 不,它没有,UIButton 跨多个视图,尽管它们共享同一个视图控制器。 CMD 点击这些 UIButtons 将不允许我选择多个。【参考方案5】:您可以使用IBOutletCollection
,以下链接将帮助您使用它
http://useyourloaf.com/blog/2011/03/28/interface-builder-outlet-collections.html
【讨论】:
【参考方案6】:在 Xcode 5 中,为第一个按钮设置操作后,我必须构建应用程序。然后,这允许我将其他按钮操作连接到相同的 IBAction 方法
【讨论】:
【参考方案7】:在 xcode 4.6.3 中 在分配操作之前您不再需要保存。
【讨论】:
@Chris : Xcode : 5.0.2 : 在分配操作之前无需保存。 我使用 5.0.2,但发现我需要 - 当我不希望 Xcode 如此不一致时,我被搞砸了几次。 =/ @Chris 我仍然在 Xcode 6 中这样做,我认为在 Xcode 7 中也不会有太大的不同。以上是关于如何将情节提要中的多个按钮连接到单个动作?的主要内容,如果未能解决你的问题,请参考以下文章
使用多个 ViewController、Xcode 将代码连接到情节提要中的 UI
如何在情节提要中将属性 tableView 连接到 UITableView