Swift纯Code之旅 Day5. 「编辑与新增 - Navigation Bar」

/images/emoticon/emoticon33.gif
大家应该还记得昨天我们有说到今天会聊聊TableView Cell的内容,事不宜迟,
马上来聊聊Navigation Bar吧(?

注意!!今天要讲的不是TableView Cell哦,已经将主题改为Navigation Bar!

https://ithelp.ithome.com.tw/upload/images/20210915/20108999CT3pEbhU9X.jpg

大家可以发现闹钟的新增与编辑都是靠最上面这两颗按钮来完成的,这两颗按钮其实有专属的名称分别是:

  • navigationItem.rightBarButtonItem
  • navigationItem.leftBarButtonItem

应该光看名称就知道谁是谁了吧/images/emoticon/emoticon37.gif

那马上使用Code来制作他们吧!

func setNavigation() {
        //Left Button
        let editButton = UIBarButtonItem(title: "编辑",
                                         style: .plain,
                                         target: self,
                                         action: #selector(editAlarm))
        editButton.tintColor = .orange
        self.navigationItem.leftBarButtonItem = editButton

        //Right Button
        let addButton = UIBarButtonItem(image: UIImage(systemName: "plus"),
                                        style: .plain,
                                        target: self,
                                        action: #selector(addAlarm))
        addButton.tintColor = .orange
        self.navigationItem.rightBarButtonItem = addButton
    }

这边来稍微说明一下Code的内容:

由於Navigation Bar的Button只接受UIBarButtonItem型态,因此这边才会将Button宣告为UIBarButtonItem型态。

首先宣告一个名称为editButton的变数,其型态为UIBarButtonItem
UIBarButtonItem所使用的四个变数说明如下:

  • title(该按钮显示的名称)
  • style(按钮点击效果)
  • target(目标对象,基本上就是自己)
  • action(按钮按下後会执行的Function)

设定完後再将按钮的颜色更改为橘色,之後再 assign 到 Navigation Bar Button 里面。

右边的按钮基本上也是一样的设定方式,唯一不同的是:右边的按钮是一个 + 符号的图案
因此这边使用 UIImage(systemNamed: "plus") 来实作一个图案为 + 的按钮。

UIImage(systemNamed: "...")是去Xcode的内建图库依照名称去抓取相对应的图片,
更多图片名称可以去载SF Symbol了解一下

到这边按钮基本上已经设定完成了,但是Xcode应该会报错,因为我们还没实作这两颗按钮按下的Function,
因此这边先新增两个没有内容的Function:

@objc func editAlarm() {

    }

@objc func addAlarm() {

    }

OK,这样应该就没问题了,记得把设定 Navigation 的 Function 加进去 viewDidLoad()中哦!

override func viewDidLoad() {
        super.viewDidLoad()
        setViews()
        setLayouts()
        // Set Navigation
        setNavigation()
    }

执行专案後应该会呈现出下面这样:
https://ithelp.ithome.com.tw/upload/images/20210915/20108999gIBus7A9Sa.png

明天应该会来说说这两颗按钮的动作,明天见罗/images/emoticon/emoticon08.gif


<<:  鬼故事 - 什麽东西我都要拿在手上

>>:  Day02:新手网页全端工程师的必备知识

学习成为人体 PE Parser

看日常分享: AwesomeCS FB 看技术文章: AwesomeCS Wiki 笔者最近在阅读...

Day18 订单 -- 优惠项目

前几天我们把购物车流程跑完了,其中有讲到优惠的部份, 因此我们订单需要新增table来储存该内容,这...

@Day14 | C# WixToolset + WPF 帅到不行的安装包 [Windows菜单捷径]

在 昨天很多的教学後, 这次来个雷同的WindowsMenum的建立,直接上程序码吧! <!-...

JavaScript Day 11. 筛选条件 filter()

阵列中常用的方法还有 filter() 跟 map(),filter() 方法可以根据指定的筛选条件...

Day25 - 加入简单的动画

今天想偷个懒,先为App加入一点动画, 主要是从欢迎页到登入页的过度动画。 Navigation t...