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

Swift 3-将BarButtonItem添加到每个ViewController上的NavigationBar,而不重复代码

Swift 3是一种编程语言,用于开发iOS、macOS、watchOS和tvOS应用程序。它是苹果公司推出的一种现代、安全、高效的编程语言。

在Swift 3中,可以通过以下步骤将BarButtonItem添加到每个ViewController上的NavigationBar,而不重复代码:

  1. 首先,在每个ViewController的类中,导入UIKit框架:import UIKit
  2. 在每个ViewController的viewDidLoad方法中,创建一个UIBarButtonItem对象,并设置其样式和目标动作。例如:
代码语言:swift
复制
override func viewDidLoad() {
    super.viewDidLoad()
    
    let barButtonItem = UIBarButtonItem(title: "按钮标题", style: .plain, target: self, action: #selector(buttonTapped))
    navigationItem.rightBarButtonItem = barButtonItem
}

@objc func buttonTapped() {
    // 处理按钮点击事件
}
  1. 重复上述步骤,将上述代码添加到每个ViewController的viewDidLoad方法中。这样,每个ViewController都会在其NavigationBar上显示一个相同的BarButtonItem。

这种方法的优势是可以避免在每个ViewController中重复编写相同的代码,提高了代码的复用性和可维护性。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,无法给出具体的链接地址。但是,腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储、人工智能等。可以通过访问腾讯云官方网站,了解更多关于这些产品的详细信息和使用指南。

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

相关·内容

IOS开发之TabBarItem&NavigationBarItem

下面将会结合一个实际效果来简单介绍一下TabBar和NavigationBar, 然后说一下用我们storyboard和纯代码如何配置我们NavigationBar, 一篇博客中提到了如何用Navigation...3.每个Navigation Controller中又对应着一些ViewController, 这些ViewController之间我们可以通过按钮控制NavigationController来进行切换...接下来会为每个导航控制器配置NavigateBar, 在一个NavigationController中只有一个NavigationBar, 而在一个NavigationController下各个ViewController...1 //手动添加NavigationBar上得右侧按钮 2 //新建BarButtonItem1, 同时指定样式,和注册回调 3 UIBarButtonItem *item1...上面的各种ViewController关联以后,我们在给各个ViewController绑定实体类后,就可以专心实现我们每个View业务逻辑

1.4K80

Swift-MVVM 简单演练(一)

---- GitHub 创建项目 如有需要,请移步下面两篇文章 iOS-项目上传到 GitHub iOS-项目上传到 Git.OSChina ,创建自己私有项目 ---- 项目配置 删除...= true } super.pushViewController(viewController, animated: true) } 抽取 BarButtonItem 便利构造函数...于是乎就要自定义NavigationBar 要想实现这些功能,一定尽量要少动很多控制器代码。.../ErrorType.swift, line 182 虽然会将错误信息完整打印出来,但是程序崩溃对于用户来说是很不友好,因此建议。...,类就需要继承自NSObject 如果类只是包装一些代码逻辑(写了一些函数),可以不用继承任何父类,好处: 更加轻量级 HQStatusListViewModel.swift继承任何父类 /// 微博数据列表视图模型

10.3K51
  • iOS系统中导航栏转场解决方案与最佳实践

    常见解决方案如下所示: 重新实现一个类似 UINavigationController 容器类视图管理器,这个容器类视图管理器做好不同 ViewController导航栏样式转换工作,每个...系统原有导航栏背景设置为透明色,同时在每个 ViewController 添加一个 View 或者 NavigationBar 来充当我们实际看到导航栏,每个 ViewController 同样只需要关心自身样式即可...在转场过程中隐藏原有的导航栏并添加假 NavigationBar,当转场结束后删除假 NavigationBar 并恢复原有的导航栏,这一过程可以通过 Swizzle 方式完成,每个 ViewController...大型 App 导航栏问题就像一个典型“公地悲剧”问题。在软件行业,公用代码所有权可以被视作“公地”,因为注重长期需求容易遭到消耗。...设计理念 使用者只用关心当前 ViewController NavigationBar 样式,不用在 push 或者 pop 时候去处理 NavigationBar 样式。

    2.4K30

    UINavigationController 导航控制器概念属性方法

    只是其中管理对象是controller,通过push与pop进行controller切换,UINavigationController是这些控件(UINavigationBar,UINavigationItem...NavigationController管理着NavigationBar(通过navigationController. navigationBar方式可以调用) NavigationBar管理多个...管理着ToolBar,通过navigationController.toolbar方式调用 控制器管理东西 每个界面的Controller管理一个它界面的NavigationItem(通过controller...*barHideOnSwipeGestureRecognizer; 10、屏幕滑动时候是否隐藏导航栏,常用于tableView,滑隐藏导航栏,下滑显示,带动画效果 @property (nonatomic...:(BOOL)animated { // 这里参数viewController就是即将被push进来控制器 viewController.hidesBottomBarWhenPushed

    2.1K60

    iOS透明导航栏平滑过渡(进阶版)引实现过程结

    很多App做法其实比较粗糙,类似于我在传送门:iOS导航栏切换界面时隐藏和显示中做法,需要导航栏透明时,直接导航栏隐藏起来。...设置导航栏背景透明度 导航栏应该是有很多view,我们要做是只让背景透明,保留标题、返回按钮。iOS没有直接给我们提供对于导航栏背景view访问途径,那么我们只能自己来找了。...有它在岂不是前功尽弃了,再用上面的方法已经不管用了,这条线不在我们找出来子view之中,通过查资料,要隐藏这跟细线方法很多,但是要跟我们对导航栏背景设置冲突,又要能到只在导航栏背景设为透明时才隐藏...这样每个 ViewController 都可以管理自己导航栏透明度,在这个新增属性setter方法中,我们调用前面在在 UINavigationController Category 中添加设置导航栏透明度方法...再次宣传,代码可以在示例工程下载(觉得有帮助小伙伴请不吝加Star~):https://github.com/Cloudox/SmoothNavDemo ---- 参考(swift):http://www.jianshu.com

    3.1K40

    UI篇-UINavigationController之易忘补充

    ---- 对nextVC 进行属性赋值后,执行push跳转,方法执行顺序:  A跳转到B 代码顺序执行: Binit 方法;(此方法中  BnavigationController 不存在...: [self.navigationController.navigationBar setTintColor:[UIColor redColor]];//写默认是蓝色back 但是这个设置不会影响第二个...每个视图控制器都有一个navigationItem属性,navigationItem中设置做按钮、右按钮、标题等,会随着控制器显示,也显示到navigationBar 我们来看一下这些名词是什么意思...navigationItem包含了bar视图全部元素(如title,tileview,backBarButtonItem等),受当前viewcontroller管理,即bar形成整个nv导航视图,然后每个...,visibleViewController代表当前可见VC,它可能是topViewController,也可能是当前topViewController present出来VC。

    2.1K20

    Swift 项目 - Xib | StoryBoard 多人协作技巧

    哪怕是用纯代码开发,如果没有命名规范,肆意嵌套if,遵守MVC或者MVVM等开发模式,区分开发环境与生产环境,这样写出来代码又何谈可维护性,和多人协作呢?...这样我们可以功能图标的CollectionView代码放到这第一个子控制器,CollectionViewDelegate、CollectionViewDataSource等代码也由子控制器实现...哪怕纯代码也是一样,因此,如果需要修改类名或者变量名,应该善用Xcode重构功能,不是简单直接修改。 这样修改类名或者变量名是,Storyboard或者Xib绑定或连线内容也会同步改变。...这个结果是如何出现,不妨大胆猜测一下,可能是由于苹果在对象多次创建情况下,Storyboard可能存在缓存复刻机制,来提升效率,代码并没有这样优化。...上述结果果然验证了我们猜测,随着次数减少,Storyboard创建速度逐渐低于存代码创建,但单次耗时仍然低于万分之一秒,这种效率是不会让用户有任何感知,何况重复创建比纯代码还有优势,因此,这一条也不算

    2.1K20

    Swift 周报 第三十七期

    在基于值和类型参数包提案 SE-0393 基础,这个提案使允许在值参数包中对每个元素进行迭代,并使用 for-in 语法每个值绑定到本地变量。...这意味着元组扩展中 self 类型是(重复每个 T),其中每个 T 是声明一致性扩展通用参数。由于 SE-0399,对包扩展表达式中每个 self 引用扩展到元组元素。...现在,我们对每个对象应用替换,每个 T 类型参数包替换为包含单个具体类型包, 说 X。...此一致性条件要求必须精确重复每个 T: P,其中每个 T 是扩展类型参数包,P 是一致性协议。...当我尝试从同一个 Obj-c ViewController 调用相同方法时,它给出了以下错误: ViewController 没有可见 @interface 声明选择器 testMe 我代码如下:

    18530

    UIKit Dynamics:开始入门 —《Graphics & Animation系列一》

    准备开始 在ViewController.swift 添加如下代码在viewDidLoad: let square = UIView(frame: CGRect(x: 100, y: 100,...碰撞对象需要知道它应该与之交互每个视图; 因此障碍添加到物品列表中允许碰撞物体也作用于障碍物。...红色屏障对用户而言仍然可见,但对动态引擎不可见,边界对动态引擎可见但对用户不可见。 当方块落下时,它似乎与屏障相互作用,但它实际碰撞了不动边界。 构建并运行,如下所示: ?...引擎盖下有很多事情要做, 下一节向展示动态引擎如何与应用程序中对象交互一些细节。 碰撞细节 每个动态行为都有一个动作属性。...打开ViewController.swift并在viewDidLoad上方添加以下属性: var firstContact = false 将以下代码添加到碰撞代理方法末尾func collisionBehavior

    1.9K30

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

    UIView是iPhone屏幕很多控件基础类。每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊UIView)内众多UIView及其专门化子类构建。...导航栏可以通过直接访问navigationBar属性,改变栏风格或者它颜色: C代码   self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent...其描述了导航栏显示内容,正好UIViewController另有一导航项属性navigationItem包括左栏按钮(leftBarButtonItem)、右栏按钮(rightBarButtonItem...或其他任何类型视图控制器),并通过设置栏viewControllers属性将其添加到选项卡栏,使每个选项卡对应一个试图控制器。... init];   // tabBarController.delegate = self; // 创建一系列要添加到每个具体Tab卡视图控制器 MyViewController *vc1 =

    5.1K50

    面向协议编程与 Cocoa 邂逅 ()

    所谓协议,就是一组属性和/或方法定义,如果某个具体类型想要遵守一个协议,那它需要实现这个协议所定义所有这些内容。协议实际事情不过是“关于实现约定”。...我们看到 Tiger 和 Animal 共享了一部分代码,这部分代码被封装到了父类中,除了 Tiger 其他子类也能够使用 Animal 这些代码。...多继承 当然,Swift 是不支持多继承。不过如果有多继承的话,我们确实可以从多个父类进行继承,并将 myMethod 添加到合适地方。...像是 C++ 这样语言选择粗暴地菱形缺陷问题交给程序员处理,这无疑非常复杂,并且增加了人为错误可能性。绝大多数现代语言对多继承这个特性选择避而远之。... Swift protocol 这个概念继承了下来,并发扬光大。

    60120

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

    在右侧,我们有ViewController.swift,在那里我们可以找到该出口声明。单击并拖动左侧圆圈,它应该是第15行,然后释放到ARSCNView。现在,关闭助理编辑。...现在,打开Assistant编辑器并控制故事板中按钮拖到ViewController类。代码顺序并不重要,因为我们稍后会移动此函数。原因是我们不能在扩展类中执行此操作。...在ViewController.swift中,一个新类变量声明为一个节点数组,我们将其初始化为空。...操作方法末尾,您添加每个模型追加到数组modelsInTheScene中。...结论 经过漫长旅程,我们终于将我们模型添加到我们环境中,好像它们属于它。我们在本节中也学到了其他有用概念。我们在故事板中定制了我们视图,并在代码中播放动画。

    5.5K20

    优酷iOS插件化页面架构方法

    此时需要发挥一下我们想象力,把每个 feature 想象成是一个电器,它们都配有统一规格插头。ViewController 好比一个插线板,电器无论插在哪个板也是可以工作。...功能单元则是跟这里每个节点有着联系,一个功能单元对应一个或多个插件。...在此基础,我们常用列表容器、UI 布局逻辑、埋点统计逻辑、网络请求逻辑、用户交互手势逻辑、路由跳转逻辑等通用逻辑进行抽象插件化改造,最终形成 4+N 架构组成。...数据中心为每个模块开辟一块独立空间存放数据,这是保证不同模块数据串扰又同时保证同一模块内数据共享。同一模块下只需字段名参数便可读写数据;不同模块下也只是多增加一项目标模块 ID 参数便可读取数据。...4)ButtonPlugin 接收 ViewDIDLoad 事件,进行初始化、添加到 ViewController 等操作,当用户点击屏幕时,自行处理 Tap 操作。

    1.5K51

    Swift:静态工厂方法

    swift: 静态工厂方法 视图 Views 视图是我们在编写UI代码时必须设置最常见对象之一。...iOSUIKit和MacAppKit都为我们提供了创建具有原生外观UI所需所有基本核心构建块,但是我们经常需要自定义这些外观以适合我们设计并为其定义布局。...(暂时), //以免将此功能添加到我们应用程序全局使用UIButton中。...特别是如果与"Swift子视图控制器用作插件" 中便捷API稍加修改版本结合使用,我们现在可以在执行异步操作时轻松添加预先配置加载视图控制器: class ProductListViewController...通过命名上述工厂方法makeStub,我们还可以清楚地知道此代码仅用于测试,因此将来不会意外将其添加到我们主要应用程序目标中。

    2.4K10
    领券