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

禁用来自不同ViewController的按钮- Swift 3

在Swift 3中,禁用来自不同ViewController的按钮可以通过以下步骤实现:

  1. 首先,确保你已经在每个ViewController中正确地设置了按钮的IBOutlet和IBAction。IBOutlet用于将按钮与代码中的变量关联起来,IBAction用于定义按钮被点击时执行的方法。
  2. 在需要禁用按钮的ViewController中,可以通过以下方式禁用来自其他ViewController的按钮:
代码语言:swift
复制

// 在需要禁用按钮的ViewController中

// 假设有一个名为otherViewController的ViewController,其中有一个名为otherButton的按钮

// 在需要禁用按钮的地方,获取到otherViewController的实例

let otherVC = self.storyboard?.instantiateViewController(withIdentifier: "OtherViewController") as! OtherViewController

// 然后可以通过以下方式禁用otherButton

otherVC.otherButton.isEnabled = false

代码语言:txt
复制

上述代码中,我们首先通过storyboard的instantiateViewController(withIdentifier:)方法获取到了otherViewController的实例。然后,我们可以通过实例的属性来访问和操作其中的按钮,将按钮的isEnabled属性设置为false即可禁用按钮。

注意:上述代码中的"OtherViewController"是其他ViewController的标识符,需要根据实际情况进行替换。

  1. 如果需要在其他ViewController中禁用当前ViewController中的按钮,可以使用代理模式或者通知机制来实现。

代理模式示例:

在当前ViewController中定义一个代理协议,并在需要禁用的按钮的点击方法中调用代理方法。然后,在其他ViewController中实现代理方法,并在其中禁用当前ViewController中的按钮。

代码语言:swift
复制

// 在当前ViewController中定义代理协议

protocol ButtonDelegate: class {

代码语言:txt
复制
   func disableButton()

}

class CurrentViewController: UIViewController {

代码语言:txt
复制
   weak var delegate: ButtonDelegate?
代码语言:txt
复制
   @IBAction func buttonClicked(_ sender: UIButton) {
代码语言:txt
复制
       // 调用代理方法
代码语言:txt
复制
       delegate?.disableButton()
代码语言:txt
复制
   }

}

// 在其他ViewController中实现代理方法

class OtherViewController: UIViewController, ButtonDelegate {

代码语言:txt
复制
   @IBOutlet weak var currentButton: UIButton!
代码语言:txt
复制
   override func viewDidLoad() {
代码语言:txt
复制
       super.viewDidLoad()
代码语言:txt
复制
       // 设置当前ViewController的代理为self
代码语言:txt
复制
       let currentVC = self.storyboard?.instantiateViewController(withIdentifier: "CurrentViewController") as! CurrentViewController
代码语言:txt
复制
       currentVC.delegate = self
代码语言:txt
复制
   }
代码语言:txt
复制
   // 实现代理方法
代码语言:txt
复制
   func disableButton() {
代码语言:txt
复制
       currentButton.isEnabled = false
代码语言:txt
复制
   }

}

代码语言:txt
复制

通过以上代码,我们在当前ViewController中定义了一个代理协议ButtonDelegate,并在按钮的点击方法中调用了代理方法。然后,在其他ViewController中实现了ButtonDelegate协议,并在其中禁用了当前ViewController中的按钮。

通知机制示例:

在当前ViewController中发送一个通知,其他ViewController监听该通知并在接收到通知时禁用当前ViewController中的按钮。

代码语言:swift
复制

// 在当前ViewController中发送通知

@IBAction func buttonClicked(_ sender: UIButton) {

代码语言:txt
复制
   NotificationCenter.default.post(name: NSNotification.Name(rawValue: "DisableButtonNotification"), object: nil)

}

// 在其他ViewController中监听通知

class OtherViewController: UIViewController {

代码语言:txt
复制
   @IBOutlet weak var currentButton: UIButton!
代码语言:txt
复制
   override func viewDidLoad() {
代码语言:txt
复制
       super.viewDidLoad()
代码语言:txt
复制
       // 监听通知
代码语言:txt
复制
       NotificationCenter.default.addObserver(self, selector: #selector(disableButton), name: NSNotification.Name(rawValue: "DisableButtonNotification"), object: nil)
代码语言:txt
复制
   }
代码语言:txt
复制
   // 接收到通知时禁用按钮
代码语言:txt
复制
   @objc func disableButton() {
代码语言:txt
复制
       currentButton.isEnabled = false
代码语言:txt
复制
   }

}

代码语言:txt
复制

通过以上代码,我们在当前ViewController中发送了一个名为"DisableButtonNotification"的通知,其他ViewController通过监听该通知,在接收到通知时禁用了当前ViewController中的按钮。

以上是禁用来自不同ViewController的按钮的实现方法。在实际开发中,可以根据具体需求选择适合的方法来实现按钮的禁用操作。

对于Swift 3中的禁用按钮的问题,腾讯云提供了一系列云计算产品和服务,如云服务器、云数据库、云存储等,可以帮助开发者构建稳定可靠的云计算解决方案。具体产品和服务的介绍和使用方法可以参考腾讯云官方文档:https://cloud.tencent.com/document/product/213

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

相关·内容

Mac开发之 Cocoa 绑定 入门

3.绑定简单使用方式 3.1 视图(View)绑定到模型(Model) 将视图绑定到模型对象,就是告诉视图需要显示内容来自哪里(通常是数据模型对象某个属性),以及什么时候更新显示内容.当数据模型某一属性值发生改变时...可以将视图许多不同属性绑定到某一(或多个)模型属性上.能够绑定具体视图属性会因视图不同不同....这样就可以告诉绑定系统,Label显示内容来自ViewControllerson属性score值,也就是我们说Label与son进行了绑定(准确说,就是LabelValues属性与son...slider,用于验证设置是否生效,界面的视图大概类似下面的样子: 添加UI控件 (2)设置复选框绑定,对复选框Valus属性进行绑定操作 绑定复选框Value到默认系统 (3)设置slider绑定...(设置slider控件enable属性绑定),大体如下图: 绑定sliderEnabled到默认系统 启动应用,改变复选框状态时,注意滑块启用或禁用状态,然后退出应用并重新启动,注意观察复选框,

1.9K20

将模型添加到场景中 - 在您环境中显示3D内容

在右侧,我们有ViewController.swift,在那里我们可以找到该出口声明。单击并拖动左侧圆圈,它应该是第15行,然后释放到ARSCNView上。现在,关闭助理编辑。...现在,打开Assistant编辑器并控制将故事板中按钮拖到ViewController类。代码中顺序并不重要,因为我们稍后会移动此函数。原因是我们不能在扩展类中执行此操作。...让我们转到ViewController.swift并剪切动作函数addObjectButtonTapped并将其粘贴到这里以将其全部放在一个地方。...回到ViewController + ObjectAddition并在getModel函数中,我们首先为比例声明一个变量,然后根据模型设置不同值。...在ViewController.swift中,将一个新类变量声明为一个节点数组,我们将其初始化为空。

5.5K20
  • Swift开发:自定义标签栏UITabBarController (Swift项目开始第一步)

    Swift学习过程中,个人感觉虽说两种语言相似度很大,但是Swift依然在代码风格上有着和OC很大差异。...屏幕快照 2017-07-15 上午11.22.57.png 这里首先删除工程文件下ViewController.swift、Main.StoryBoard 和TARGETS下MainInterFace...第二步:准备资源文件 1.在Assets.xcassets中存放标签栏按钮所需要图片资源 ?...屏幕快照 2017-07-15 下午1.46.26.png 这里做下说明,之所以创建这个plist文件是因为在之后创建视图控制器和标签按钮时会有很大便利性,而且也十分方便真实开发过程中需求更改。...rootViewController = MainTabBarController(); return true } 总结:以上就是在OC代码基础上,使用Swift来自定义标签控制器方法和步骤

    4.3K70

    Mac开发跬步积累(二):NSViewController 转场动画精耕细作

    图片来自网络 与iOS相比,在macOS中,控制器转场情景相对要简洁一些,没有iOS中导航控制器Push和Pop动画以及边缘返回手势, 保留下Present方式,倒是提供了特有的切换方式, 可以供我们使用出许多效果...) 3....添加需要切换子控制器: RedController 和BlueController 为自定义两个控制器,仅显示不同视图颜色....修改4,5 步骤中option 参数,可以实现不同transition 效果. 0x04 : Present 动画效果 presentViewControllerAsSheet @IBAction...View)上进行点击操作,可能会触发容器视图中控件(比如按钮)方法 解决办法: 给容器视图添加一层背景视图(自定义NSView, 重写mouseDown方法即可),通过背景视图屏蔽鼠标操作,防止事件穿透到容器视图中

    2.7K40

    ​使用Swift和Xcode开发iOS应用详细教程

    iOS应用开发是一项充满创意和挑战工作,而Swift作为苹果公司推崇编程语言,Xcode则是官方提供集成开发环境。...在本篇博客中,我们将一步步地介绍如何使用Swift和Xcode创建一个简单iOS应用。我们将涵盖项目的创建、界面设计、Swift代码编写以及应用运行。让我们开始这个令人兴奋开发之旅!...步骤3:设计应用界面在Xcode左侧导航栏中找到Main.storyboard文件,这是应用主界面设计文件。在Storyboard中,你可以使用图形界面设计应用用户界面。...拖拽各种界面元素(如按钮、标签等)到视图控制器中。例如,将一个按钮放置在视图控制器上,并在属性检查器中设置按钮标题为“Click Me”。...}}在这个例子中,我们假设已经在Main.storyboard中创建了一个按钮和一个标签,并将它们分别关联到ViewController.swift文件中myButton和myLabel属性。

    1.3K10

    初探 Core ML:学习建立一个图像识别 App

    trained-model 作为开发者,我们主要关心是如何使用机器学习模型来做出有趣玩意。幸运是,Apple 让 Core ML 可以很简单不同机器学习模型整合进我们 App 中。...接着点选左边按钮然后到右侧 Attributes Inspector 里将按钮由 System Item 改为 「Camera」。右边按钮则修改文字为 「Library」。...因为我们尚未将 UIImagePickerControllerDelegate 方法们加入至 ViewController.swift中,所以会发生错误。...回到 ViewController.swift,将 CoreML 引入: import CoreML 接着,为 Inceptionv3 宣告一个 model 变数并且在 viewWillAppear()...图像转换 在 ViewController.swift Extension 中,添加下述代码。

    2.8K70

    AppleCore ML3简介——为iPhone构建深度学习模型(附代码)

    并且它支持在GPU上进行训练 3)用于TensorFlowSwift Swift for TensorFlow有一个灵活、高性能类似于TensorFlow/PyTorchAPI来构建复杂神经网络架构...这个框架最吸引人地方是它代码和Python代码一样易读。以下是相同模型在Swift和Python不同表达(注意相似性): ?...2)在Core ML 3中加入了新型神经网络层 ? 除了为不同模型类型提供层外,Core ML 3还为中间操作提供了100多个层,比如掩蔽、张量操作、布尔逻辑、控制流等等。...在项目导航窗格中,选择ViewController.swift。这个文件包含了很多控制我们应用程序功能代码。...在ViewController.swift文件IBActions(第33行)下面编写以下代码: extension ViewController { func imageClassify(image

    2.1K20

    iOS自动化测试XCTest探索

    XCTest是iOS单元测试框架,有objective-c和swift两种语言可以选择。Xcuitest是iOSUI测试框架。...写一个简单登录页面,需要帐号 & 密码两个输入框、登录按钮,效果如下图: 1、在ViewController层可以编写业务逻辑,给控件增加触发事件。...输入用户名和密码,点击登录按钮弹出alert弹框,判断用户名和密码正确性。...3、给控件绑定事件 登录按钮绑定事件在ViewController.h里面,定义userLogin方法: @interface ViewController : UIViewController - (...测试用例运行 点击test方法名有个播放按钮,点击播放按钮,先build一个被测app,然后build一个测试用app,这个app没有任何页面,启动后执行测试case。

    3K30

    36.Swift学习之Associated Object

    介绍 Swift 可以利用 OC runtime 和 KVC ,在运行时向一个对象添加值存储,这种方式称之为Associated Object。...,并且通过 & 操作符取地址并作为 UnsafeRawPointer 类型被传入,这在 Swift 与 C 协作和指针操作时是一种很常见用法。...((UIButton)->Void){ block(button) } } } UIButton 传参 项目开发中,经常会有类似九宫格菜单按钮,每个按钮点击时参数是不一样...,此时可以有如下几种方案: 创建 9 个按钮,逐一设置 通过 for 创建 9 个 UIButton,为 UIButton设置不同tag,然后在点击事件里面用 switch case判断 自定义UIButton...,添加自定义属性 利用 Associated Object 绑定参数 class ViewController: UIViewController { // 不同参数 let

    2.1K20

    iOS学习—— UINavigationController返回按钮与侧滑返回手势研究

    而在这个模块上,我们有某个或某些viewController需要禁用侧滑手势(一般需要禁用侧滑手势是因为返回或退出当前viewController时需要double confirm,在一些填表页面比较常见...),而其他viewController则不需要禁用侧滑手势。...UINavigationController有效,所以一旦你在某个界面禁用了侧滑,那么该UINavigationController控制下所有viewController都会禁用侧滑,这显然是不合理...提供一个解决方案就是在进入viewController时 - (void)viewDidAppear:(BOOL)animated; 中禁用侧滑手势,然后在离开viewController时 - (void...对于导航栏上按钮三兄弟,我们在3个类下面都能发现他们,比如当前在一个UIViewController内,输入以下方法都能发现他们。

    6.7K60

    一文读懂Xcode 9 所有更新:全新模拟器,兼容Swift低版本等

    从图中可以看到,ViewController 类所有引用它地方,所在文件位置,都直接铺在了代码编辑器里面,只需要滚动编辑框,就可以很轻松看到这次重构影响所有地方,非常方便。...Swift 低版本兼容 XCode 9 使用 Swift 4 编译器。 这次新编译器同时可以支持 Swift 3, 这样就不用立即修改项目的 Swift 代码了。...我们都知道,Xcode 左边栏中黄色小文件夹叫做 Group: 在以前 Xcode 版本中, 直接在这里面移动文件是不会影响文件系统位置,比如把 ViewController.swift 文件移动到...只需要点击右下角 Clone 按钮,即可把项目从 Github 中复制下来。...在这个页面上,如果是 Xcode 工程,还会看到 Open in Xcode 按钮: 点击这个按钮,你就可以直接在本地 Xcode 打开这个项目, 后台 Clone 操作完全透明了。

    1.8K70

    【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验

    需求: 1.显示一个橘黄色矩形 2.矩形上面一个按钮可以点击,并有响应事件 3.界面中心显示一张图片 系统版本: Mac OS 版本:10.15.5 Xcode版本:11.5 一、创建demo项目 1.1...二、代码实现 2.1 程序入口说明 Application/AppDelegate.swift文件中@UIApplication注解,表示这个Class类是程序入口 ?...2.3 功能实现 2.3.1 创建一个视图,添加一个黄色矩形 import UIKit class ViewController: UIViewController { override func...2.3.2 添加一个按钮,并添加按钮点击事件监听方法 // 2.创建一个按钮 let btn = UIButton(type: .contactAdd) // 2.1 添加到当前视图 v.addSubview...三、上述示例swift与object-c语法对比 3.1 创建视图类比 - Swift: UIView(XXX:) - OC: [[UIView alloc] initWithXXX:] 类名()

    4.3K31
    领券