Use this shortcut to instantiate ViewController in Swift https://chanakya-hirpara.medium.com/use-this-shortcut-to-instantiate-viewcontroller-in-swift-ecba7ea6136f
How to transition from login screen to tab bar controller https://fluffy.es/how-to-transition-from-login-screen-to-tab-bar-controller/
IOS Swift 界面跳轉以及傳值 https://www.twblogs.net/a/5ee86a086040a668d92fdc83
Swift 不同Controller互動 與 Navigation Bar https://cdfq152313.github.io/2016-10-03/
UserDefault https://medium.com/@albert1994/使用swift開發app-簡易儲存-userdefault-eda46f6e28ea
save time https://stackoverflow.com/questions/55776143/how-to-store-date-in-userdefaults
在你腦袋不清楚的時候會掉入無窮迴圈, 試著做了所有的嘗試之後. 最後還需要你剛好從版本控制中看到那筆可愛的檔案
errMsg
Multiple commands produce '/Users/CymmetrikDev2/Library/Developer/Xcode/DerivedData/EzPrint-egdfssexygmyfocjtgihqezjdaqd/Build/Intermediates.noindex/EzPrint.build/Debug-iphoneos/EzPrint.build/Objects-normal/arm64/BaseHttpAPI.stringsdata'
Target 'EzPrint' (project 'EzPrint') has compile command for Swift source files
其實主因是不熟悉 uikit 框架, 在使用某些物件時沒有依據規則導致發生預期的例外。比如這次使用到的 UINib(nibname, identity)…
需要設定相關的權限說明,否則無法使用藍芽。以下兩個屬性在開啟新專案時就已經建立在 project info 中。(不確定是不是 brook 添加的)
而且有預設的提示文字,根據手機當言的語系來做呈現
< ios 13: Privacy - Bluetooth Peripheral Usage Description
>= ios 13: Privacy - Bluetooth Always Usage Description
透過 storyboard 左邊控件列表越往下,显示就会越往上,这个是可以拖动顺序的。
在設定 background 時,執行到目標手機時效果都沒有出來(background configuration)。所以後來改用另一個設定(view)的 background,但沒辦法直接設定 connerRadius。所以改從 user defined runtime attribute 增加屬性
//key path
layer.cornerRadius
//Type
Number
//value
16
上述設定都透過 storyboard,都沒有透過程式碼。
由於 Swift 程式語言儲存浮點型的方式問題, 浮點型 (Double/Float) 的精度丟失問題是必然會發生的。解決這個問題的方法不多,但是講回來他的小數位數補得很滿,所以也不至於丟失太多。(其實其他語言也是一樣,只是大多會自動配上四捨五入
網上查了很大多數的解決方案
要點是運算都用同一個型別,最後轉出給伺服器實在改為字串。
最後考量 App 本身對於這些後端來的資料不進行計算,為了降低網路傳輸量。想讓後端如果有小數點的都用字串來交換資料,當然也可以再轉換成四捨五入,但可能未來在邏輯增加時有丟失資料的可能性。
// localable.string
"loginFailedAPI"="error msg:%1$@, code: %2$d";
// code
var args = [CVarArg]()
args.append("internal err")
args.append(500)
let nsStr = NSLocalizedString("loginFailedAPI", comment: "")
let result = String.localizedStringWithFormat(nsStr, args)
關於藍芽、GPS 的提示如果要走自定義的多語系,需要新增 string file 檔名只能是 InfoPlist,然後有固定的 key 值,比如 “Privacy - Bluetooth Peripheral Usage Description” 對應的 key 會是 "NSBluetoothPeripheralUsageDescription",那就必須使用這組 key 來調整開啟藍芽的提示訊息內容。
通常你會看到兩種情形,加進來的 swift 檔案找不到 target membership,另一種是看的到 target membership 但無法加入版控…
上述的步驟先在專案中建立相同的 group,再將檔案透過 finder 複製過來,並且透過 add files to "your project name"。(另外也試過不建立 group 直接加入複製過來的 folder + file)
情竟是在初始化 storyboard app 專案時,依據現有專案調整專案目錄後 debug 時會出現黑畫面網上還找不到解方(情境不相同
後來開新專案後可正常執行,所以紀錄以下步驟,請依序做
segmented controll 可以想像畫面上方有 nav bar,但沒有實作切換分頁的效果。以下的文章介紹都是如何透過 segmented controll 來達成畫面切換。
segmented controll 常見搭配招式如下
手刻 segmented # How to Make a Custom Segmented Control (iOS, Xcode 8, Swift 3)
[ref][https://medium.com/彼得潘的-swift-ios-app-開發問題解答集/stack-view-scroll-view-製作分頁-tutorial-懶得寫程式版-7ff9021317a0] 因為設定上不熟悉,因而特別記錄這篇。
步驟
Authorise an Additional User to your iOS Developer Account
Step
後台相關
下述的流程是由第一個跟第二個參考連結而來的,一開始只看第二個後來發現文章中沒有特別提及 App IDs (推測是在其他部分提到),所以才去找了第一個。
Step register App IDs => register ServiceID(client ID, redirectURL) => private key => Apple Service Email Notification(有使用我們服務並且想跟我們聯絡的)
"scope=name email"
.