heavenchou - 周日, 2019/10/27 - 14:42
本篇要實作二個視窗,一個主視窗,一個子視窗,類似在 MS Window 開發程式時的 fmMain、fmOption 二個視窗。
重點在於主視窗可以開啟子視窗,子視窗可以關閉,但並不是像 Mac 的視窗那樣真的關閉,只是隱藏起來。當再次開啟副視窗時,則再次呈現,畫面中的內容也保持一樣。
同時也希望各視窗之間可以彼此操控對方的元件。
初步構想
-
先設定全域變數 vcMain 和 vcOption 來記錄二個視窗的 ViewController。
-
要開啟子視窗時,先判斷子視窗是否已經實作了?若無,則實作它,若已實作了則顯示它。
-
實作視窗後,記錄在全域變數中。
-
子視窗關閉時,採用隱藏方式。
-
利用全域變數去控制對方視窗的元件。
heavenchou - 周日, 2019/10/27 - 14:33
Window 與 View 的生命周期
記錄一下自己測試的順序,這也是為什麼在 ViewController 中要設定 Window 的代理不能在第一個 viewDidLoad 之後做,因為此時 window 還沒有 windowDidLoad。要等到 viewWillAppear 時才能設定 window 的代理。
-
viewDidLoad
-
windowDidLoad
-
viewWillAppear
-
viewDidAppear
-
viewWillLayout
-
viewDidLayout
-
viewWillLayout
-
viewDidLayout
-
------------------
-
windowShouldClose
-
windowWillClose
-
viewWillDisappear
-
viewDidDisappear
heavenchou - 周日, 2019/10/27 - 14:18
在這系列【Xcode 用 Storyboard 開發程式記錄】已經學會了建立視窗與畫面,開啟視窗,以及為元件寫簡單程式。
底下這一系列就要學習如何用程式來開啟視窗,以及跨視窗操作視窗和元件等各種功能,最後再實作一個總複習,讓視窗與元件的控制可以自在無礙,這也是未來設計 CBReader Mac 版的的前測試。
heavenchou - 週六, 2019/10/26 - 15:33
當最後一位靈童被帶進來時,大家的神情都流露出緊張中帶著期盼,彷彿說明了對於前二位靈童的表現不是很滿意,大家把希望寄託在最後一位身上。
小男孩被帶到房間的中央,老和尚請他坐在椅子上,叫他心情放鬆,準備最後一道考驗。
小男孩坐定後,對面突然有一道布簾被拉開,出現了三位年青人,也是排成一字坐在椅子上。
老和尚對小男孩說,你不要緊張,這是最後的問題了,這三位之中有一位是你前世的鄰居,你看仔細了,你覺得是哪一位呢?
heavenchou - 四, 2019/10/24 - 01:00
前言
CBETA 目前提供的電子書主要有三個版本:ePub、PDF、mobi。其中最主要製作的版本是 ePub,至於 PDF 和 mobi 則是利用 Calibre 轉換產生的。因此對於 CBETA 產生的 PDF 或 mobi 的格式有不同需求的法友,可以自行利用 Calibre 來產生適合自己的版本。底下簡單介紹 Calibre 的轉換操作,提供有需要的法友參考。
下載程式
首先下載 Calibre,不過根據我們的經驗,所有 4.x 的版本 (目前最新的版本是 4.2.0) 產生的 PDF 會有問題,中文內容經複製後會產生亂碼,因此我們是下載 3.x 的最後一版,也就是 3.48.0 。若您沒有複製的需求,您可以挑您喜歡的版本來轉換。
底下網址可以找到各種版本,包括 Windows、Mac、Linux 等。
https://download.calibre-ebook.com
因為需要多種版本測試,所以我是下載 Calibre Portable 版。
heavenchou - 週六, 2019/10/19 - 16:41
在獨立檔案建立共用物件
這個階段要建立一個共用物件,例如程式的設定資料,我希望在一個獨立的檔案建立 CSetting 類別,產生 Setting 物件,然後在第二個視窗去修改設定內容,並且在第一個視窗可以取得修改過的資料。
同樣建立新檔,這次不是視窗,所以選空白的 Swift File。

heavenchou - 週六, 2019/10/19 - 16:32
建立第二視窗
接著要設計開啟第二個視窗的功能。
首先打開元件列表,將 View Controller 拉到設計畫面,也就是藍框的位置,那就是第二個視窗。

heavenchou - 週六, 2019/10/19 - 16:25
設計畫面
現在要在畫面上加一些元件。
先按下右上角紅框的+號,會出現元件列表,把一個 Push Button 拉到畫面的 View 中。

heavenchou - 週六, 2019/10/19 - 16:13
這一篇算是自己初學 Xcode + Storyboard 的記錄,想要了解檔案、視窗之間彼此的關係。
Mac 最新推出的是 SwiftUI 框架,但它必須要最新的 macOS 10.15 Catalina 才能執行,而且參考資料不多,所以我還是先學習 Storyboard。
以下記錄是自己查詢及摸索來的,主要目標是讓程式可以執行,並不一定是正確的或最好的,也許解釋上還有錯誤,參考時請小心。
heavenchou - 週一, 2019/10/14 - 21:47
我未來有機會要在 Mac 的 Xcode 開發程式,因為是在不熟悉的環境,所以要先了解一些基本的工具,其中版本控制的 Git 就是重要的工具之一。
在 Windows 環境下,我使用 Git 是用 TortoiseGit 這一套工具,它是 GUI 界面,非常方便好用。在 Windows 下的開發環境或 VSCode 等編輯程式雖然也有整合 Git,我就懶得學那麼多套了,直接用 TortoiseGit 來操作。當然,我更懶得背 Git 的指令了。
在 Mac 上,我雖然有安裝 Sourcetree 這套工具,但還沒有熟悉,所以打算直接學習在 Xcode 上操作 Git,也省得每次要離開 Xcode 才能操作 Git 的功能。
底下記錄我常用的功能與操作方式,不過並不會介紹 Git 的細節,所以這是只適合對 Git 已有初步認識的人閱讀的。
環境
macOS 10.15 Catalina
Xcode 11.1
頁面