成功上架:FitMo健身預約
這是我第十篇文章,用上架來紀念一下~
下載連結如下~~~
起源
在健身房運動時,我們常常碰到預約教練了卻忘記何時該上課(有時只是嘴上說說,或是在line對話中提到),如果教練沒有提醒,這種放鳥的事情大概也層出不窮(教練表示習慣了…),於是乎,為了解決這樣的情形,就來做做有提醒功能的App吧!
PS.資料儲存使用SheetDB,因為測試的時候,免費的用量(500request/month)用爆了,於是乎我TM直接課金,所以未免有心人士破壞,在此就不提供上架的程式碼,但其中遇到的技術問題,我還是會另做一個範例分享給大家的
(這年頭齁大家的Clap真不好賺….)
這其實也是我之前第一篇medium的主題,也剛好用我第十篇的文章來呼應它,修改且新增註冊登入功能進行上架(目前更新版本有推播功能)。
LOGO:
既然是跟運動健身有關LOGO當然要運動風啊!
但是我對美術沒有天份,到底怎麼生出這個LOGO的啊~
當然網路上有很多資源,這邊提供我使用的(重點是免費呀!!)
我必須說有些圖案不適合使用去背效果 於是乎我有改一點,像是原本背後的太陽?因為去背後原本的樣子會跑掉(如果想清的很徹底的話)
所以我就把後面的圖案換成了好去背的圖案(是不是很偷懶哈哈)
// 以下分享我卡住花比較久的一些問題~
1.預約頁面(table view)點擊無法到下一頁
原因:
如果TableView內有寫判斷手勢的函示,會造成 TableView點擊事件無效或是需要滑動才有效
如圖所示
解決方式:
對於UIGestureRecognizer參數中,cancelsTouchesInView設置為false。
cancelsTouchesInView:
預設情況為true,這種情況下GestureRecognizer 識別到touch之後,會發送touchesCancelled给hit-testview用以取消hit-test view對touch的響應(response),這個時候只有GestureRecognizer響應touch。
當設置成False時,GestureRecognizer識別到touch之後不會發送touchesCancelled给hit-test,這個時候GestureRecognizer和hit-test view均響應touch。
但這代表了什麼呢?
看了以下的流程圖你會更有感~
簡單來說:
系統在使用者點擊後,會先進行判定到底是哪種手勢(點擊,捏合,拖曳…etc),下一步則是進行hit-test view尋找合適的view,所以當touchesCancelled預設情況為true,這種情況下GestureRecognizer 識別到touch之後,會發送touchesCancelled给hit-testview用以取消hit-test view對touch的響應,之後就不會進到hit-test view這層,而是把每次的touch視為我們當初為了讓鍵盤收起的tap
UITapGestureRecognizer(target: self, action: #selector(dismissKeyBoard))了。
範例程式提供如下連結
參考連結如下
2.傳值到各個頁面
關於傳值,分享Debbie學姊的文章很清楚,給大家看看
那麼如果是要傳值到下個頁面是且要經過tab bar controller 跟 navigation controller到各個分頁,要如何做到呢?
要經過tab bar controller 跟 navigation controller
可以先Peter看看這個
那麼延伸一下,要到多個頁面呢?
首先大家可以先看看這個官方文件
viewControllers是一個陣列,第一個(最左邊)是[0],第二個是[1]
只要在viewControllers後表是要傳到哪個tab bar 得分頁就可以成功傳值到你指定的頁面了(耶~
以下也提供一個範例
範例程式提供如下連結
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue_logIn" {
let tabBarController = segue.destination as! UITabBarController
let navController = tabBarController.viewControllers?[0] as?
UINavigationController
let homeViewController = navController?.viewControllers.first
as! HomeViewController
homeViewController.homeString = HomeTextField.text
let tabBarController1 = segue.destination as! UITabBarController
let navController1 = tabBarController1.viewControllers?[1] as?
UINavigationController
let personViewController = navController1?.viewControllers.first
as! PersonViewController
personViewController.personString = PersonTextField.text
}
}
以上是我上架FitMo這個作品時遇到的問題,往後會一直更新新功能(初版功能還很少),遇到的問題有些小小心得也會繼續增加在內,覺得我的文章不錯的也可以幫我clap幾下,我會非常感激你的^~^b。