iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
自我挑戰組

30天Swift純Code之旅 - 鬧鐘篇系列 第 6

Swift純Code之旅 Day6. 「新增鬧鐘的第一步 - 新增新增鬧鐘頁面」

  • 分享至 

  • xImage
  •  

你說這趟純Code之旅都過了五天了,連鬧鐘的影子都沒看到?

先別著急,我們今天就是要來實作新增鬧鐘的第一步。

還記得我們昨天已經將新增鬧鐘的按鈕建好了嗎?,今天就要來對他動手動腳,讓他按下去有效果。
可以看到IPhone內建鬧鐘按下 + 按鈕後,會有一個新增鬧鐘的頁面由下往上跳出來。

這時候呢就要用到「Present」這個Function來讓畫面由下而上跳出來,啊你說跳就跳哦?誰知道要跳哪個畫面出來?
沒錯!所以在實作跳畫面之前,需要先建立一個畫面!我們就將它命名為:「AddAlarmViewController」

命名在寫程式很重要,無論是Function、變數、畫面,一個好的命名可以為使用者省掉很多讀Code的時間。
忘記怎麼新增畫面的話,可以去前幾篇文章幫我複(刷) 習(刷) 一(流) 下(量)。

新增完後讓我們回到「AlarmViewController」內,在「addAlarm」中加入以下程式碼:

@objc func addAlarm() {
        let vc = AddAlarmViewController()
        present(vc, animated: true, completion: nil)
    }

簡單說明一下上面的程式碼,首先我們建立了一個變數:「vc」,裡面裝著「AddAlarmViewController」
之後用 present() 將這個畫面由下往上跳出來。
present()總共有三個引數,其代表意義分別為:

  1. 要將哪個畫面由下往上跳出來
  2. animated -> (跳出來時是否要有動畫)
  3. completion -> (跳出來後要執行哪些東西)

所以我們這邊寫present(vc, animated: true, completion: nil)就意味著:

要將「vc」這個畫面從下往上跳出來,並且要有動畫,跳出來後不執行任何動作。

最後呢,我們再回到「AddAlarmViewController」內,將他的背景色更改一下:

class AddAlarmViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .systemBlue
    }
}

馬上執行程式看看會發生什麼事吧!

太~神~辣~ 相信各位看到自己做出這個效果一定很感動。
想當初我做出這個效果還到處去跟家人炫耀XD


現在讓我們讓畫面更像IPhone的鬧鐘吧,你可以看見IPhone的新增鬧鐘頁面也有Navigation Bar,
https://ithelp.ithome.com.tw/upload/images/20210916/2010899967XGUqjLBC.jpg

因此我們必須動點手腳讓這片藍色的畫面變得更像IPhone的新增鬧鐘畫面

首先先宣告一個變數「nv」,用來裝 變成NavigationController的「vc」畫面

因為要讓「vc」可以有Navigation Bar,因此必須讓 vc 變成 NavigationController

@objc func addAlarm() {
        let vc = AddAlarmViewController()
        let nv = UINavigationController(rootViewController: vc)
        present(nv, animated: true, completion: nil)
    }

然後再到「AddAlarmViewController」去設定他的Navigation Bar吧:
前幾天都有說過,各位可以挑戰看看/images/emoticon/emoticon06.gif,真的遇到困難再往下參考我的寫法唷!

class AddAlarmViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .black
        setNavigation()
    }
    
    func setNavigation() {
        // Set Navigatoin title
        self.title = "加入鬧鐘"
        
        //Set Navigation Title Color
        self.navigationController?.navigationBar.titleTextAttributes =  [.foregroundColor: UIColor.white]
        
        //Set Navigation Bar Background Color
        self.navigationController?.navigationBar.barTintColor = #colorLiteral(red: 0.1669761635, green: 0.1807887411, blue: 0.2008549854, alpha: 1)
        
        //Left Button
        let cancelButton = UIBarButtonItem(title: "取消",
                                         style: .plain,
                                         target: self,
                                         action: #selector(backToMain))
        cancelButton.tintColor = .orange
        self.navigationItem.leftBarButtonItem = cancelButton

        //Right Button
        let saveButton = UIBarButtonItem(title: "儲存",
                                        style: .plain,
                                        target: self,
                                        action: #selector(saveAlarm))
        saveButton.tintColor = .orange
        self.navigationItem.rightBarButtonItem = saveButton
    }
    
    @objc func saveAlarm() {
        
    }
    
    @objc func backToMain() {
        
    }
}

是不是真的很像了/images/emoticon/emoticon37.gif


上一篇
Swift純Code之旅 Day5. 「編輯與新增 - Navigation Bar」
下一篇
Swift純Code之旅 Day7. 「時間魔術師: DatePicker」
系列文
30天Swift純Code之旅 - 鬧鐘篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言