iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0
Mobile Development

少年K的Swift奇幻漂流記系列 第 21

Day21 Swift Clock App 實作 Part2:NavigationBar 需要的funciton、NavigationBar title

  • 分享至 

  • xImage
  •  

在我們新增完NavigationBar的button之後,我們需要給這些button設定按下之後的動作

右邊的+Button

我們需要這個Button可以做到的事就是,推送到我們已經創建好並且拉好物件的畫面,也就是新增鬧鐘頁面

// 因為我們前面是用指令新增的 NavigationBar的Button,所以我們要用 @objc 去宣告要給他的動作

// 前面給的動作為 addTapped,那我們就新增一個 function
@objc func addTapped() {
    
    // 先把要推送到的目的地命名為一個常數,方便後面操作
    let addAlarmVC = AddAlarmViewController()
    
    // 那我們這邊跳轉頁面用到的是present,所以code會跟push不一樣
    addAlarmVC.delegate = self
    let navController = UINavigationController(rootViewController: addAlarmVC)
    self.present(navController, animated: true, completion: nil)
}

左邊的編輯按鈕

左邊的編輯按鈕我需要他做的事,就是利用一個布林變數去控制編輯按鈕的樣式

// 首先我們要建立一個 isEditing 參數
var isEdting: Bool = false

@objc func editTapped() {
    isEditing.toggle()
    tableView.setEditing(isEditing, animated: true)
    
    // 利用剛開始設定的布林參數做變動
    navigationItem.leftBarButtonItem?.title = isEditing ? "完成" : "編輯"
    
    // 遍歷所有當前可見的表格視圖單元格,並將其隱藏的開關控件設置為編輯狀態。
    tableView.visibleCells.forEach { cell in
        if let switchControl = (cell as? SecondTableViewCell)?.swAlarm {
            switchControl.isHidden = isEditing
        }
    }
}

最後說一下 NavigationBar 的 title

其實會放在那個位置其實就兩行 code

// 設定成我誠品畫面中的那樣,並且當中間tableView存放鬧鐘的地方往上滑動時,他會變為在左右 Button 的中間
navigationController?.navigationBar.prefersLargeTitles = true

// 然後再設定我們需要他顯示什麼字,比如我們設定的字為鬧鐘
navigationItem.title = "鬧鐘"

補充,約束很重要,要拉好,不然就算code設定了,效果也會跟預期的不一樣

  • 約束資料:https://medium.com/@ethan0320/uikit%E8%A3%A1%E7%9A%84layout-constraints-72ac6d9bf1be

結論

把 NavigationBar 需要的東西完善


上一篇
Day20 Swift Clock App 實作 Part1:NavigationBar創建左右按鈕
下一篇
Day22 Swift Clock App 實作 Part3:建立鬧鐘需要的模型
系列文
少年K的Swift奇幻漂流記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言