成功上架:FitMo健身預約

這是我第十篇文章,用上架來紀念一下~

上架第一件事情,就是請朋友給五星好評然後趕快截圖(誤)

下載連結如下~~~

起源

在健身房運動時,我們常常碰到預約教練了卻忘記何時該上課(有時只是嘴上說說,或是在line對話中提到),如果教練沒有提醒,這種放鳥的事情大概也層出不窮(教練表示習慣了…),於是乎,為了解決這樣的情形,就來做做有提醒功能的App吧!

PS.資料儲存使用SheetDB,因為測試的時候,免費的用量(500request/month)用爆了,於是乎我TM直接課金,所以未免有心人士破壞,在此就不提供上架的程式碼,但其中遇到的技術問題,我還是會另做一個範例分享給大家的
(這年頭齁大家的Clap真不好賺….)

這其實也是我之前第一篇medium的主題,也剛好用我第十篇的文章來呼應它,修改且新增註冊登入功能進行上架(目前更新版本有推播功能)。

LOGO:

既然是跟運動健身有關LOGO當然要運動風啊!
但是我對美術沒有天份,到底怎麼生出這個LOGO的啊~

當然網路上有很多資源,這邊提供我使用的(重點是免費呀!!)

我必須說有些圖案不適合使用去背效果 於是乎我有改一點,像是原本背後的太陽?因為去背後原本的樣子會跑掉(如果想清的很徹底的話)
所以我就把後面的圖案換成了好去背的圖案(是不是很偷懶哈哈)

// 以下分享我卡住花比較久的一些問題~

1.預約頁面(table view)點擊無法到下一頁

原因

如果TableView內有寫判斷手勢的函示,會造成 TableView點擊事件無效或是需要滑動才有效

如圖所示

點擊選擇tableviewcell日期無法到下一頁

解決方式

對於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。

cancelsTouchesInView設為False,可以順利切換到下一頁

但這代表了什麼呢?
看了以下的流程圖你會更有感~

流程圖

簡單來說:

系統在使用者點擊後,會先進行判定到底是哪種手勢(點擊,捏合,拖曳…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。

特別感謝Peter回覆我的問題,並且提示我方向!

--

--