首页
学习
活动
专区
工具
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.2K60

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

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

    3.1K40

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

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

    2.1K20

    UI篇-UINavigationController之易忘补充

    ---- 对nextVC 进行属性赋值后,执行push跳转,方法的执行顺序:  A跳转到B 代码顺序执行: B的init 方法;(此方法中  B的navigationController 不存在...: [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.2K20

    Swift 周报 第三十七期

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

    19230

    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 将这个概念继承了下来,并发扬光大。

    60420

    将模型添加到场景中 - 在您的环境中显示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

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

    模块上的viewController进行控制。...而在这个模块上,我们有某个或某些viewController需要禁用侧滑手势(一般需要禁用侧滑手势是因为返回或退出当前viewController时需要double confirm,在一些填表的页面比较常见...钟有UIScrollView及其子类的view时,侧滑手势影响用户体验效果,此时用户将无法通过侧滑进行返回。...他们都属于UINavigationItem的组成部分,都显示在navigationBar上,都属于UIBarButtonItem类,所以我给他们取名为导航条上的按钮三兄弟,哈哈哈。。。   ...此外,还有一点需要我们注意的是navigationBar上的leftBarButtonItem、rightBarButtonItem可以有多个,用法也非常简单,常见用法就是一般在 - (void)viewDidLoad

    6.9K60
    领券