首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS -以编程方式添加具有不同目标的按钮,始终调用最后添加的按钮目标

在iOS开发中,可以通过编程方式添加具有不同目标的按钮,并且始终调用最后添加的按钮目标。下面是一个示例代码:

代码语言:txt
复制
import UIKit

class ViewController: UIViewController {
    var buttons = [UIButton]() // 用于存储添加的按钮
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建并添加按钮
        addButton(title: "Button 1", target: #selector(button1Tapped))
        addButton(title: "Button 2", target: #selector(button2Tapped))
        addButton(title: "Button 3", target: #selector(button3Tapped))
        
        // 设置按钮的布局
        layoutButtons()
    }
    
    func addButton(title: String, target: Selector) {
        let button = UIButton(type: .system)
        button.setTitle(title, for: .normal)
        button.addTarget(self, action: target, for: .touchUpInside)
        buttons.append(button)
        view.addSubview(button)
    }
    
    func layoutButtons() {
        var previousButton: UIButton? = nil
        
        for button in buttons {
            button.translatesAutoresizingMaskIntoConstraints = false
            
            // 设置按钮的约束
            button.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20).isActive = true
            button.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20).isActive = true
            
            if let previousButton = previousButton {
                button.topAnchor.constraint(equalTo: previousButton.bottomAnchor, constant: 20).isActive = true
            } else {
                button.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
            }
            
            previousButton = button
        }
    }
    
    @objc func button1Tapped() {
        print("Button 1 tapped")
    }
    
    @objc func button2Tapped() {
        print("Button 2 tapped")
    }
    
    @objc func button3Tapped() {
        print("Button 3 tapped")
    }
}

这段代码演示了如何通过编程方式添加具有不同目标的按钮,并且始终调用最后添加的按钮目标。在viewDidLoad方法中,我们创建了三个按钮并分别设置它们的标题和目标。然后通过layoutButtons方法设置按钮的布局,使用Auto Layout来约束按钮的位置。最后,我们为每个按钮的目标方法添加了相应的处理函数。

这个例子中使用了UIKit框架来创建和布局按钮,适用于iOS应用的前端开发。如果你想了解更多关于iOS开发的信息,可以参考腾讯云的移动开发相关产品和服务,比如腾讯移动开发平台(https://cloud.tencent.com/product/mps)和腾讯移动推送(https://cloud.tencent.com/product/tpns)等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

最新iOS设计规范三|3大界面要素:栏(Bars)

在拆分视图中,导航栏可能会显示在拆分视图单个窗格中。导航栏是半透明,也可以添加背景色,并且必要时可以设置为隐藏。 ? 某些情况下可暂时隐藏导航栏,提供更沉浸体验。...当显示在导航栏中时,可以将搜索栏固定在导航栏中,以便始终可以调用。也可以将其折叠,当用户向上滑动时展开显示。 使用搜索栏而不是仅仅通过“搜索”文字来实现搜索。文字没有用户所期望标准搜索栏外观。...五、标签栏(Tab Bars) 标签栏出现在页面底部,可以在APP不同模块之间快速切换。标签栏是半透明,也可添加背景颜色。所有页面的标签栏应保持相同高度,并且在弹出键盘时隐藏。...为了使您界面具有可预测性,选择一个选项卡应始终影响直接连接到选项卡栏视图,而不影响屏幕上其他位置视图。例如,在拆分视图左侧选择一个选项卡不应导致拆分视图右侧突然改变。...工具栏应该是当前页面中有意义并且常用命令。 思考图标或文本标题按钮哪个更适合。当你需要3个以上工具栏按钮时,图标的效果更好。如果是3个或3个以下按钮,文本按钮可以更清晰。

9.9K10

最新iOS设计规范五|3大界面要素:控件(Controls)

添加联系人”按钮提供了一种替代输入联系人信息方式,而不是替换方法。可以将其用作添加现有联系人快捷方式,但也可以让人们使用键盘输入联系人信息。...如果你应用需要显示超过20个页面,请考虑使用其他排列方式 - 例如网格 - 启用非顺序导航。 页面控件显示在屏幕底部中心。页面控件应始终位于内容底部和屏幕底部之间区域,并保持居中。...七、选择器(Pickers) 选择器可以显示一个或多个可滚动不同值列表,供人们选择。在iOS 14及更高版本中,日期选择器支持其他选择值方式,例如在日历视图中选择日期或使用数字键盘输入日期和时间。...通过菜单,您可以在无需向主界面添加按钮情况下为用户提供澄清动作目标或自定义动作行为方法。例如: · 当用户点击应用中添加按钮时,您可以显示一个菜单,让用户指定要添加项目。...如果你需要工具栏或导航栏中使用类似功能,请改用按钮,并提供两个不同图标来传达不同状态。 避免在开关中添加说明标签。关于开关打开或关闭,用户是很明确

8.6K30
  • 设计师应该了解iOS应用开发基础知识

    本文目的就是帮助各位设计师在最短时间内,实战方式探索iOS应用开发工具及相关基础知识。我们将一同了解应用开发流程中一些重要环节,包括理论讲解及方法演示,即使你没什么编程经验也没问题。...这类方案允许你将框架文件与Objective-C对象建立关联,达到特定目标,例如创建游戏或杂志类应用等。要使用这类技术,你最好也要对苹果本地开发工具包具有基本程度了解。...很多时候,我们需要在制作背景图片过程中,在按钮另外一侧添加一块空白区域,弥补阴影效果所占据空间,确保按钮自身处于正中央。...应用界面的可视化编辑iOS开发圈子当中始终存在一个争论——是完全通过代码方式创建应用更好,还是使用Interface Builder更加直观构建界面来更好些。...值得一提是,iOS会自动为你图标添加圆角和高光,所以在制作时候你并不需要自己处理这些效果。如果不希望系统为图标添加高光效果,可以在之前设置图标的地方勾选“Prerendered”。

    84630

    如何结合 Core Data 和 SwiftUI

    尽管时间相距遥远,Apple 还是投入了大量工作确保这两种强大技术能够完美地相互配合使用,这意味着 Core Data 就像始终这种方式设计一样,已集成到 SwiftUI 中。...接下来,单击 “Attributes”表正下方+按钮添加两个属性:“id”作为 UUID 和 “name” 作为字符串。...是的,student.name是可选——它可能有一个值,也可能没有。这是 Core Data 一个领域,该领域会让您大为恼火:它具有可选数据概念,但与 Swift 可选数据完全不同。...这是一个引发函数调用,因为理论上它可能会失败。实际上,我们所做一切都没有失败可能,因此我们可以使用try?来调用它——–我们不在乎捕获错误。 因此,请将最后一行添加按钮操作中: try?...self.moc.save() 最后,您现在应该可以运行该应用程序并对其进行尝试——单击几次 “Add” 按钮生成一些随机学生,您应该看到他们滑入我们列表某个位置。

    11.8K30

    iOS Human Interface Guidelines》——Integrating with iOSiOS整合

    为了达成这个目标,遵守这一节指南可以帮助你给予用户他们期待体验。 恰当使用标准UI元素 尽可能使用UIKit提供标准UI元素是好方式。...你不会希望通过显示看起来像在不同于当前设备运行iOS系统版本UI元素来让用户感到迷惑。 一般来说,不要创建一个自定义UI元素来展现标准动作。...确保你理解了文件上记录这些按钮和图标的含义;不要依赖于你对他们外表理解。...当人们点击编辑按钮时,用保存按钮代替它并添加一个取消按钮。编辑按钮转变提醒人们他们是在编辑模式,并且也许需要保存更改,而取消按钮让他们可以不保存更改退出。...当你大部分用户期待方式设计你app时,你就降低了设置需求。如果你需要用户信息,向系统寻求而不是要求用户来提供。

    89430

    如何使用Web Share API

    iOS提供了许多本机共享选项 与传统方法相比,这种方法具有许多优点: 向用户提供了多种共享内容选项。 可以通过取消各个社交平台第三方脚本来改善页面加载时间。...无需为不同社交媒体网站和电子邮件添加一系列按钮。单个按钮足以触发设备本机共享选项。 用户可以在自己设备上自定义他们首选共享目标,而是不仅限于预定义选项。...以下是帮助我们实现这一目标的代码部分: 1shareButton.addEventListener('click', event => { 2 shareDialog.classList.add('...按下共享按钮时会触发 Android 本机共享选项。 第二个测试显示在不支持该功能 Android 设备上单击了贡献按钮。 这会产生手动添加后备共享选项。.../#criteria】,则可以将做为共享目标添加到用户主屏幕上。

    1.8K10

    iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

    状态栏: 是透明 始终固定在整个屏幕上边缘 API注释 你可以将全应用状态栏风格设计成统一,或者给不同视图控制器定义不同状态栏风格。...活动是: 一种可定制对象,代表着某个可以让用户在app中执行操作服务 标的形式呈现,外观与栏按钮图标相似 ? 用户通过点击活动图标来启动某样活动。...不要创建一个自定义按钮来触发活动视图控制器。用户更习惯点击动作按钮后使用系统提供服务。你应该学会如何更好地利用用户这一既定习惯,而不是强迫他们一种全新方式来完成同样事情。...表格视图: 容易进行分段或分组单列形式展示数据 用户可以通过点击来选中某行,或通过控件来添加、移除、多选、查看详情或者展开另一个表格视图 iOS定义了两种表格样式: 分组型(Grouped)。...iOS定义了在平铺型表格和分组型表格中最常用到四种单元格布局样式。每种单元格样式都有最适合展示信息类型。 重要 从编程角度来说,这些样式应用于单元格中,用以控制表格里每一列绘制方式

    10.1K51

    XcodeXcode 9 全新功能您会喜欢工具。内建 Interface BuilderXcode IDE

    全新源代码管理导航器凸显了我们对 Git 支持:您可以快速浏览每个分支,标签及遥控提交更改计划表;检查某一条查看所有受影响文件,或双击某次提交查看所有更改内容;如创建和合并分支等常见操作也能在导航器中快速访问...在数分钟内创建出原型,然后图形方式将界面关联到 Xcode 编辑器中源,设置窗口、按钮和滑块布局,从而创建能够正常运行 Mac、iPhone 或 iPad 用户界面。...自动布局基于这样一种概念:界面中每个对象均可定义约束条件,用于控制其对父视图和其他界面控件响应。例如,当显示不同语言时,可以让按钮优先保持特定大小或扩展容纳更大文本。...预览 利用预览模式,您可在不同环境中快速查看界面,无需运行 app,从而大大加快了迭代设计过程。您可以在纵向或横向模式下、在以前版本 iOS 上、在不同屏幕尺寸下等环境下查看 app。...该按钮可以显示与标头对应内容、超类、调用方、被调用方或其他有帮助文件。

    8.3K30

    IOS开发基础系列】UIAlertController专题

    一种模块化替换方式来代替这两货功能和作用。...根据苹果官方定义,“警示”样式按钮是用在可能会改变或删除数据操作上。因此用了红色目标识来警示用户。...和对话框不同,上拉菜单展示形式和设备大小有关。在iPhone上(紧缩宽度),上拉菜单从屏幕底部升起。在iPad上(常规宽度),上拉菜单弹出框形式展现。         ...其他按钮将会按照添加次序从上往下依次显示。《iOS 用户界面指南》要求所有的“毁坏”样式按钮都必须排名第一(红榜嘛,很好理解,对不对?)。         ...不过您仍然可以在需要时候编程方式释放它,就像释放其他视图控制器一样。您应当在应用程序转至后台运行时移除对话框或者上拉菜单。

    53430

    最新iOS设计规范四|3大界面要素:视图(Views)

    按钮放置在人们期望位置。一般而言,人们最有可能点击按钮应位于右侧。取消按钮始终位于左侧。 正确标记取消按钮。取消警报操作按钮始终标记为“取消”。 识别破坏性按钮。...避免额外点击,尤其是需要在多个不同项目栏中打开浮层时。 避免浮层太大。浮层不应该占据整个屏幕,足以显示其内容并指向触发按钮即可。请注意,系统可能会调整浮层大小,确保它适合屏幕。...行可以被分隔为不同标记部分,并且会有索引标记显示在屏幕右侧。页眉可以出现在一节中第一项之前,页脚可以出现在最后一项之后。 ? 分组列表。...行分组形式显示,组上方可以出现页眉,下方则可以出现页脚。此样式列表至少包含一个组,每个组至少包含一行。分组列表一般不包含索引标记。 ? 插入分组。行具有圆角组显示,并从父视图边缘插入。...还应该在启用了辅助功能选项(例如粗体文本)情况下测试内容单显示情况。 显示恰当键盘类型。iOS提供了几种不同键盘类型,每种键盘都对应着一种具体输入方式

    8.5K31

    iOS10.3后允许App运行中变更App图标

    但是这只能在iOS10.3之后实现。 效果如下: 可以看到在点击按钮操作后将App图标更换掉了。 这个效果可以用在很多地方,做出更加需要时效性App,比如日历、时间、天气、票据、活动等等。...我们需要在 Info.plist 中添加一些字段,如图所示: 其中Primary用来放初始图标,我们以前在Assets中放图标,其实也会生成这个键,Icon files 中是图片数组,按理是应该放置不同尺寸图片...一定要注意键就是图片名字,这样在调用上面的API传入图片名时才能够找到对应键值对,否则会变更失败,控制台会显示找不到文件。 使用方法 首先我们在界面上放两个按钮,点击响应就是要更换成不同图标。...App运行时候更换App图标的方法,但是,当点击按钮变更图标的时候,系统会弹出一个提示框: 这体验就不太顺滑了,总不能每次都去打断用户吧,下面着手解决这个问题。...这说明这种变化图标的方法早就有了,只是一直没开放,而且可能与现在开放出方式还不太一样,有兴趣可以研究一下当前几个API背后实现原理,然后想想时钟效果又该怎么去做。

    83520

    最新iOS设计规范十|5大拓展程序(Extensions)

    人们知道,标准iOS键盘上Globe键(在启用了多个键盘时会替换Emoji键)会迅速切换到其他键盘。他们希望您键盘具有类似的直观体验。...除非您应用将文档存储在单个目录中,否则用户应导航到目录层次结构中特定目标。考虑提供一种添加新子目录方法。 不要提供自定义导航栏。您扩展程序将加载到已经包含导航栏模式视图中。...努力提供贴近人们情感贴纸。考虑合并图像,单词和短语以为对话添加维度。 放眼全球。消息传递是一种通用通信形式。力求获得具有广泛国际吸引力贴纸。 使用描述性图像名称或提供替代文本标签。...设计一个带有单个中心点图标,一了然。包括一个不会压倒其他图标的简单背景。 保持图标四角方形。系统应用一个自动将图标角变圆蒙版。提供不同大小图标。...操作扩展则是让用户启动针对当前内容任务,例如添加书签、复制链接、保存图像。 用户在点击页面中操作按钮,会显示带有共享扩展和操作扩展活动视图。该活动视图只会显示与当前内容相关扩展。

    3.2K10

    OpenCV3 和 Qt5 计算机视觉:11~12

    该过程本身具有多种变体,并且可以根据目标平台采取很多不同形式,但是它们都有一个共同点,就是以一种可以在目标平台中简单地执行它方式打包应用。 困扰应用依赖项。...然后,由编译器生成输出文件将传递到链接器,然后我们进入链接阶段。 链接 链接器是在构建过程链中被调用最后一个程序,其目标是链接由编译器生成对象生成可执行文件或库。...将您应用文件复制到data文件夹中。 该文件夹将完全按原样提取到目标文件夹中(我们将在后面的步骤中讨论如何设置包目标文件夹)。 如果您打算创建多个包,请确保合理方式正确分离其数据。...必须按照在 Windows 或任何其他桌面平台中添加方式将它们添加到 Qt 项目文件中。 对于 iOS,在您 MacOS 操作系统上拥有最新版本 Xcode 就足够了。...我们从这种高度可读且易于使用语言裸露语法开始,然后转向开发包含可以相互交互以实现一个共同目标的组件应用。

    6.3K20

    Flutter 1.22 正式发布

    对于iOS 14,此版本包括对新Xcode 12,新图标的支持以及对新iOS 14 App Clips功能预览支持。...,一个稳定Platform Views版本(Google Maps和WebView插件基础)以及一个开关,您可以在其中添加代码改善在具有高频率显示设备上滚动。...对于iOS 14,我们对Flutter进行了很多更改,确保它可以按照开发人员方式工作: Xcode 12需要iOS 9.0或更高版本,因此我们默认模板将其默认值从8.0增加到9.0 iOS 14特定崩溃和字体渲染问题已在...现有的Flutter按钮看上去不错,但很难使用,尤其是在需要自定义主题时。此外,“Material”规范已扩展为包括具有新样式按钮。...预览:平滑滚动提供不匹配输入和显示频率 当输入和显示频率不同时,Flutter团队与Google内部合作伙伴合作,极大地提高了滚动性能。

    7.5K20

    简单了解下无障碍设计模式

    添加一个按钮、图片或一行文本都会使界面变得更加复杂,可以通过以下方式简化你应用: 清晰可见元素 足够对比度和尺寸 明确重要性级别 使主要信息一了然 健全 使你应用能适应各种用户。...使用颜色、形状、文本和动效来传达正在发生事情 访问你应用:包含适当内容标签,适应那些使用纯文字版本用户 具体 支持特定平台辅助技术,就像支持触摸、键盘和鼠标的输入方式一样。...不管屏幕有多大,这种尺寸触摸目标都相当于大约 9mm 物理尺寸。推荐触摸目标的尺寸为 7-10mm。可能需要使用更大触摸目标来适配更大范围用户,例如运动能力还在发展中儿童。...头像:40dp 图标:24dp 两者触摸目标:48dp 触摸目标示例 触摸目标高度:48dp 按钮高度:36dp 触摸目标按钮示例 分组项目 把相关项目放在一起,对那些视力低下或者在屏幕上聚焦困难用户是有帮助...开始熟悉这些工具,然后你可以给他们最好用户体验。 人们不同方式使用无障碍技术。 书写 清晰且有帮助无障碍文本是使 UI 更易访问主要方法之一。

    4.8K40

    收藏!UI Tabbar底部标签栏设计全攻略

    标签栏导航剖析 底部标签栏可以是纯图标导航: 或图标可以与文本标签组合: 所选导航选项通常具有不同视觉风格,可以帮助用户一了然地了解当前位置。...(也可以是375) 苹果iOS标签栏 容器中图标的大小为: 25x25 pt 用于常规标签栏 18x18 pt 用于紧凑标签栏 对于方形字形,图标应该是: 23x23 pt 用于常规标签栏 17x17...✅ 带有特定号召性用语对象标签栏 2.不要添加超过5个导航图标 Tab 栏最适合 3-5 个顶级导航目的地。使用超过五个选项会使目标彼此过于接近并损害可用性。用户可能会意外触发错误选项。...❌ 可滚动标签栏 4. 不要使用不熟悉图标 您在标签栏中使用图标对您目标受众来说应该是非常清晰。如果您怀疑图标的含义是否明确,则应始终将图标与标签一起使用。...不要使用“灰+灰”颜色组合 图标颜色对比度差和标签字体小是标签栏设计两个常见问题。 始终检查文本和图标的颜色对比度。

    1.9K30

    Unity 实用插件篇 | Tutorial Master 2 游戏引导教程 快速上手

    虽然不同模块具有独特功能和设置,但所有模块都共享基本属性,这些属性主要决定了模块在画布中位置。 测试为了简单起见,我们让它在第一阶段有一个指向按钮箭头和一个悬浮文字面板提示。...此时我们点击Add创建一个Arrow Model和一个Pop-Up Model: 设置TargetCanvas 目标画布匹配按钮将要驻留画布。...这将确保箭头模块将始终基于按钮位置进行定位。 设置Placement type 放置类型为“Right”。这将放置箭头模块,以便它将定位在目标Ul元素右侧,考虑到它大小。...将Pop-Up Model 悬浮文字面板Placement Type 放置类型 设置为 “Bottom”,这样悬浮面板就会显示在目标的下方。...这里还要加一个步骤,将Trigger Type设置为UGUI Button Click,这样可以将该阶段触发机制改为点击目标Button按钮完成该阶段引导。

    1.5K21
    领券