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

如何在视图控制器中的按钮上调用 nsobject 类

回答

在视图控制器中的按钮上调用 NSObject 类的方法,需要遵循以下步骤:

  1. 在按钮的触发事件中,获取当前点击的按钮的 UIButton 实例。
  2. 通过该按钮的 tag 属性,获取该按钮在视图控制器中的位置。
  3. 创建一个 UIView 实例,并使用 addSubview 方法将其添加到视图控制器的 view 中。
  4. UIView 实例中重写 drawRect 方法,并在该方法中使用 NSObject 类的 drawRect: 方法绘制按钮。
  5. 在按钮的点击事件中,通过 UIButton 实例的 target 属性,调用 NSObject 类的 action 方法,完成按钮点击事件的调用。

名词解释

  • NSObject:是苹果开发的一种面向对象编程的基类,所有其他的 Objective-C 类都是直接或间接地继承自 NSObject 类。
  • UIButton:是 iOS 开发中常用的按钮控件,可以通过其 tag 属性来获取该按钮在视图控制器中的位置。
  • UIView:是 iOS 开发中常用的视图控件,可以用于在视图控制器中绘制各种图形、文字等。

推荐腾讯云相关产品

  1. 腾讯云云开发:是一个面向开发者的云计算服务平台,提供云服务器、云数据库、云存储、云网络、CDN 等多种云计算产品和服务,支持移动、Web 和桌面应用的开发和运行。
  2. 腾讯云音视频:是一个面向音视频行业的云计算服务平台,提供音视频直播、点播、录制、转码、CDN 等多种音视频产品和服务,支持移动、Web 和桌面应用的音视频开发。
  3. 腾讯云人工智能:是一个面向人工智能行业的云计算服务平台,提供语音识别、图像识别、自然语言处理、机器翻译等人工智能产品和服务,支持移动、Web 和桌面应用的人工智能开发。

产品介绍链接

  1. 腾讯云云开发:https://cloud.tencent.com/product/cvm
  2. 腾讯云音视频:https://cloud.tencent.com/product/vod
  3. 腾讯云人工智能:https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Protocol与Delegate 使用方法详解你要知道KVC、KVO、Delegate、Notification都在这里

,接着定义了Bird,该类继承自NSObject,因此也继承了fly方法,在Bird实现实现了fly方法,因此在main函数可以通过NSObject调用fly方法。...category类别并不要求扩展子类实现类别声明所有方法,因此,如果Bird没有实现fly方法再调用fly方法时会抛出异常,因此,正确使用方法应该先判断其是否能够响应相关方法: int main...接下来考虑一个场景,现在有两个视图控制器A和B,我们在A视图中有一个标签和一个按钮,点击按钮可以跳转到B视图,B视图有一个输入框和一个按钮,点击按钮后跳转回A视图,此时要求将B视图用户填写数据展示在A...这是一个在实际开发中比较常见场景,能够实现这个功能方法也有很多,比如:在创建B视图让其持有A视图弱引用,并提供一个函数用于修改标签数据,B视图在用户点击按钮调用该方法然后再退出视图。...这个方法肯定是可行,但是太过凌乱,B视图不一定知道该调用A视图何种方法,B视图也不一定会去调用该方法,为了规范代码,这个场景使用委托模式delegate更加合适。

1K90

iOS开发之EventKitUI框架应用

提供了选择日历,即选择EKCalendar对象视图控制器,示例如下: EKCalendarChooser *chooser = [[EKCalendarChooser alloc] initWithSelectionStyle...在导航 @property(nonatomic) BOOL showsDoneButton; // 是否展示取消按钮在导航 @property(nonatomic) BOOL showsCancelButton...; EKCalendarChooserDelegate代理定义方法如下: @protocol EKCalendarChooserDelegate @optional // 用户选择改变后触发回调...,如下: @protocol EKEventViewDelegate @required // 完成某个行为后会调用代理回调 /* typedef NS_ENUM(NSInteger...      EKEventEditViewController提供了事件编辑视图控制器,对于可编辑EKEventViewController视图控制器,当用户点击编辑按钮后,也会调用EKEventEditViewController

1.1K50
  • UI篇-UINavigationController之易忘补充

    在入口全局设置就可以达到统一导航栏颜色效果。  ...:action:设置视图触发事件 tintColor  设置tintColor可以影响添加在导航条系统样式按钮颜色  title: 标题  titleView :标题视图  leftBarButtonItem...每个视图控制器都有一个navigationItem属性,navigationItem设置按钮、右按钮、标题等,会随着控制器显示,也显示到navigationBar 我们来看一下这些名词是什么意思...是一个UIBarItem,是一种专门放在bar特殊button UIBarItem是一个NSObject,是是各种itme navigationcontroller直接控制viewcontrollers...navigationItem包含了bar视图全部元素(title,tileview,backBarButtonItem等),受当前viewcontroller管理,即bar形成整个nv导航视图,然后每个

    2.1K20

    KVO 正确使用姿势进阶及底层实现你要知道KVC、KVO、Delegate、Notification都在这里

    此时如果点击第二个按钮BTN2不幸事情就会产生,在button2Clicked方法中会产生野指针错误,因为在该方法修改了model.balance值,由于前一个视图中没有删除监听器,KVO仍然有监听器存在...,在DisplayViewController添加了一个按钮用于模拟在DisplayViewController修改model.balance值操作,现在两个视图都监听了同一对象属性值,那当我们展示...接下来看下一个栗子: /* 本栗子需要使用三个UIViewController ViewController根视图控制器 DisplayViewController 父视图控制器 SubViewController...子视图控制器 ViewController不监听模型,包括一个按钮用于创建SubViewController并展示 DisplayViewController还是之前栗子 SubViewController...,也就是所有注册了监听器都会执行回调函数,但由于继承关系存在没有执行父回调函数而是执行了两次子类回调函数,因此,为了使得父也能够正确执行监听器回调函数,在子类回调函数应当手动调用,所示子类监听器回调函数正确写法应是如下代码

    1.6K80

    跟着官方文档学习3D Touch

    另一是在app内,稍用力按压某个视图,可以预览除去该视图额外内容,再稍加用力按压屏幕,可以弹出另一个控制器界面,这个控制器界面就是点击这个被按压视图将会跳转控制器。...== 上面代理方法previewingContext,内存是同一个对象 *viewControllerToCommit:被present(pop)视图控制器 == 上面代理方法返回控制器...,内存是同一个对象 *调用时间:pop阶段调用这个方法 *作用:配置并且present一个commit(pop)视图控制器。...Snip20160415_3.png trait collection 是视图控制器(UIViewController或者其子类实例)或者视图(UIView或者其子类实例)属性,因为UIViewController...重写这个代理方法时,需要先调用这个方法默认实现,确保界面上元素视图层次结构先得到调整。

    6.4K50

    Flutter 接入 Apple 账号登录教程

    本文将详细介绍如何在 Flutter 实现这一功能,包括项目配置、iOS 部分实现,以及 Flutter 代码编写。...实现步骤 配置 在 iPhone 或模拟器运行你应用,然后打开 Xcode 项目。你可以通过终端输入 open ios/Runner.xcworkspace 打开项目。...添加按钮 关于 Sign in with Apple 按钮 要让用户通过 Sign in with Apple 认证,必须在应用添加一个合适按钮。...实现 在 Flutter 添加 Sign in with Apple 按钮有两种方法: 重新绘制按钮 使用 iOS 视图(推荐) 使用 iOS 视图步骤: 在你 Dart 代码,找到要放置 Sign...语言,打开 AppDelegate.swift 文件,并在文件顶部导入 AuthenticationServices 库: import AuthenticationServices 接下来,添加以下以实现按钮显示

    10410

    浅谈iOS内存管理机制

    autorelease会在程序走出自动释放池时执行,通常系统会自动生成自动释放池(即使是MRC下),也可以自己设定自动释放池,: @autoreleasepool{ obj= [[NSObject alloc...除了以上所述关键字,还有一些方法会引起引用计数变化,UI视图添加、移除子视图,导航控制器视图控制器推出新视图控制器以及返回,容器(数组、字典和集合)添加和移除元素。...,其他视图引用计数加减都不会影响到子视图。...导航控制器视图控制器推出新视图控制器会使被推出视图控制器引用计数加1,该视图控制器返回时候引用计数减1,具体方法如下: 导航控制器推出视图控制器调用方法:- (void)pushViewController...MRC下自定义,必须在该方法里将该类属性关键字设置为retain或copy属性release一次,以免造成内存泄露,重写方法不要忘记在第一行添加[super dealloc];。

    1.2K90

    React Native 原生密码键盘插件

    Native跟控制器 声明被JavaScript 调用方法 新建数字键盘FBYNumKeyBord,实现相应视图及功能 新建字母键盘FBYWordKeyBord,实现相应视图及功能 新建纯数字键盘...新建数字键盘FBYNumKeyBord,实现相应视图及功能 在数字键盘FBYNumKeyBord视图包含0-9数字按钮、ABC字母切换按钮、@%#特殊字符切换按钮、回删按钮、完成按钮和取消按钮。...新建字母键盘FBYWordKeyBord,实现相应视图及功能 在数字键盘FBYWordKeyBord视图包含26个字母按钮、大小写切换按钮、123数字键盘切换按钮、@%#特殊字符切换按钮、回删按钮...新建纯数字键盘FBYNumOnlyKeyBord,实现相应视图及功能 在数字键盘FBYNumOnlyKeyBord视图包含0-9数字按钮、回删按钮、完成按钮和取消按钮。...新建符号键盘FBYSymbolKeyBord,实现相应视图及功能 在数字键盘FBYSymbolKeyBord视图包含30种特殊字符按钮、123数字键盘切换按钮、ABC字母切换按钮、回删按钮、完成按钮和取消按钮

    2.5K20

    React Native手势密码插件

    调用方法 新建设置密码控制器 新建验证密码控制器 设置手势密码 验证手势密码 密码sm3加密 Javascript调用浏览器方法 三:实现源码分析 实现源码分析是根据上面列出具体实现思路来为大家解刨内部实现流程及核心代码分析...新建PwdLockPlugin,实现RCTBridgeModule协议 新建继承NSObjectPwdLockPlugin,并实现RCTBridgeModule协议 // PwdLockPlugin.h...> 引入之后,在视图初始化或者显示时候,按照如下方法调用即可 UIViewController *vc = RCTPresentedViewController()...新建设置密码控制器 设置密码控制器是由3乘39个可触摸按钮实现,用户可以通过滑动屏幕来触动屏幕按钮,每个按钮有自己特有的编号(编号为0-9),通过触动按钮先后顺序来记录手势密码,并将密码存储在本地。...新建验证密码控制器 验证密码控制器是由3乘39个可触摸按钮实现,用户可以通过滑动屏幕来触动屏幕按钮,每个按钮有自己特有的编号(编号为0-9),通过触动按钮先后顺序来记录手势密码,通过和本地存储密码进行对比验证是否一致

    1.2K20

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

    图片来自网络 与iOS相比,在macOS,控制器转场情景相对要简洁一些,没有iOS中导航控制器Push和Pop动画以及边缘返回手势, 保留下Present方式,倒是提供了特有的切换方式, 可以供我们使用出许多效果...transition方法仅支持有父子关系控制器结构. transition由父控制器super ViewController进行调用....添加需要切换控制器: RedController 和BlueController 为自定义两个控制器,仅显示不同视图颜色....动画效果 Summary(总结) 在macOS,控制器转场切换无论是presentViewController方式或者transition方式,本质都是将要显示控制器视图View,通过addSubView...View)上进行点击操作,可能会触发容器视图中控件(比如按钮)方法 解决办法: 给容器视图添加一层背景视图(自定义NSView, 重写mouseDown方法即可),通过背景视图屏蔽鼠标操作,防止事件穿透到容器视图

    2.7K40

    touchesBegan 触摸事件

    一、概念介绍 1、在用户使用App过程,会产生各种各样事件,iOS事件可以分为3大类型: 1)触摸事件 2)加速计事件 3)远程操控事件 响应者对象UIResponder 在iOS...二、UIReponder UIResponder内部提供了一下方法来处理事件,父NSObject 1、触摸事件 1)手指按下事件 - (void)touchesBegan:(NSSet<UITouch...UITouch父NSObject,存放在NSSet,无序且不能重复,通过anyObject来访问单个元素。...:(nullable UIView *)view; 四、UIEvent UIEvent:成为事件对象,记录产生时刻和类型,事件对象包含于当前多点触摸序列相对应所有触摸对象,还可以提供与特定视图或窗口相关联触摸对象...= 104, //一曲【操作:按耳机线控中间按钮三下】 UIEventSubtypeRemoteControlPreviousTrack = 105, //快退开始

    82220

    Swift-MVVM 简单演练(一)

    隐藏/显示问题 在导航控制器里面重写一下push方法 判断如果不是根控制器,那么push时候就隐藏BottomBar 注意调用super.pushViewController要在重写方法之后...在基控制器setupUI(设置界面)方法里面,我们直接创建了tableView,那么我们如果有一个标记,能根据这个标记来选择是创建普通视图,还是创建访客视图。就可以很好解决此类问题了。...到目前为止,虽然我们只是在基控制器里面创建了访客视图setupVistorView,只有一个访客视图HQVistorView,但是实际上当我们点击不同控制器时候,每个子控制器都会创建一个访客视图...总结 使用代理传递消息是为了在控制器视图之间解耦,让视图能够被多个控制器复用,TableView 但是,如果视图仅仅是为了封装代码,而从控制器剥离出来,并且能够确认该视图不会被其它控制器引用,...则可以直接通过addTarget方式为该视图按钮添加监听方法 这样做代价是耦合度高,控制器视图绑定在一起,但是省略部分冗余代码 ---- 调整未登录时导航按钮 如果单纯在setupVistorView

    10.3K51

    UIView和CALayer

    继承结构 UIView继承结构为: UIResponder : NSObject。...UIResponder是用来响应事件,也就是UIView可以响应用户事件 CALayer继承结构为: NSObject 直接从 NSObject继承,因为缺少了UIResponder,所以CALayer...UIView是视图,UIViewController是视图控制器,UIResponder是表示一个可以在屏幕响应触摸事件对象; 所属框架 UIView是在 /System/Library.../Frameworks/UIKit.framework定义 UIKit主要是用来构建用户界面,并且是可以响应事件(源于UIViewUIResponder) UIView是用来显示内容,可以处理用户事件...作用机制 当UIView需要显示时候,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己图层(CALayer),系统将图层拷贝到屏幕,完成UIView显示。

    98110

    Cocoa编程中视图控制器视图详解

    iPhone编程规则是:一个窗口,多个视图。UIView是iPhone屏幕很多控件基础。...还为标准系统行为进行响应。从语法 说,UIViewController是视图控制器视图控制器是没有可视化表示抽象,只有它管理视图才提供可视画布。记住:1....一切都是在被推入UIViewController子类内部执行推入请求和相关导航栏定制(:右键按钮)。...不过,也可以视具体情况,我们直接在一个独立视图控制器创建UITabBarController实例对象,自定义一个用于视图 切换控制器ViewSwitcherViewController,就可在其中...控制器加载视图过程 当调用视图控制器view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法创建所有的视图,这是比较好编程惯例。

    5.1K50

    iOS架构入门 - MVC模式实例演示

    ,先说这样写好处,以及初学者为什么会这么写: 比如按钮,可以在当前控制器直接add target:添加点击事件,在当前控制器内就能调用到点击方法,不需要设置代理之类; 比如要找某个界面,直接切到这个界面对应...讲解完毕,其实本质就是让Controller减压,不该控制器他别让他知道,如上基础MVC操作之后优势: MVC架构分明,在同一个模块内,如果视图有问题,找到该模块View就行,其他同理,Controller...,比如这里MNBaseDatas,之前我们举例DemoModel就无需声明 @interface DemoModel : MNBaseDatas /**继承自MNBaseDatas,父有的就可以不用声明...,基本所有的控制器都需要设置界面 setupUI 获取数据 loadDatas,所以将这两个函数抽到基MNBaseViewController 因为iOS,tableView应该算最常见控件之一...,基本大多数界面都会用它展示数据,所以tableView也抽到基,当公告属性 有tableView 就跑不了数据源了,datas 同理,也抽到基 同时,设置MNBaseViewController

    1.3K00
    领券