Creo教程:如何使用SQLite在Creo中創(chuàng)建日記應用?
有時,您想在iPhone上本地存儲數(shù)據(jù),而這樣做則需要在本地設備上建立數(shù)據(jù)庫。這次,我們將使用SQLite創(chuàng)建一個應用程序,以記錄您白天的快樂時光。我們希望將其用作日志,這是一種隨時記錄您的日??鞓窌r刻的快速方法。從技術(shù)上講,我們將每條快樂時光記錄定義為一條日志行。
一些要求:日志行不可編輯,我們希望將其顯示在列表中,并在新窗口中對其進行詳細訪問。我們希望能夠刪除它們。
在開始之前,請下載Creo如果還沒有的話。

Creo 2 for mac(移動應用app設計開發(fā)工具) v2.1.1激活版
好的,讓我們開始從Creo界面創(chuàng)建一個新的新項目。

我們不需要此應用程序的導航欄,因此讓我們將Creo創(chuàng)建的默認窗口移到NavigationBar1元素外部,然后刪除NavigationBar1并保留Window1容器。
如何使用Creo創(chuàng)建本地SQLite數(shù)據(jù)庫
讓我們轉(zhuǎn)到“控件列表”面板并搜索SQLite?,F(xiàn)在將其放在Project Globals面板上,然后在屏幕上彈出SQLite Database Configurator。我們要創(chuàng)建一個新資產(chǎn)(而不是內(nèi)存數(shù)據(jù)庫),因此我們從下拉菜單中選擇此選項,然后根據(jù)應用程序?qū)υ撔沦Y產(chǎn)進行命名。

現(xiàn)在讓我們添加一個名為的表Posts并定義其屬性:
id屬性的主鍵,自動增量,和獨特
一個body屬性
和一個date屬性

保存數(shù)據(jù)庫時,會將一個新對象添加到Globals —中SQLiteDatabase1。我們使用該對象在應用程序中與Happiness Journal數(shù)據(jù)庫進行全局交互。
如果選擇SQLiteDatabase1對象,則可以定義是否要將其用作只讀數(shù)據(jù)源。在我們的情況下,我們需要對它進行讀寫,因此我們決定將其放置在應用程序的Documents空間中。
如何通過表視圖管理數(shù)據(jù)列表
讓我們回到Window1容器,該容器應包括3個區(qū)域:標頭,插入新日志行的方式以及已添加的日志行的列表。
創(chuàng)建一個自定義標題
這很容易,而且我們之前已經(jīng)做到了。我們需要一個視圖和一個標簽。我們將視圖背景設置為藍色#48ADC6FF-,鎖定其頂部,右側(cè)和左側(cè)約束,并使其在水平和垂直方向上自動調(diào)整大小。然后,我們將標簽居中,將其字體更改為更好的字體(Bradley Hand呢?),將其稍微擴大一點,修復其左,右,底部約束,然后讓它水平自動調(diào)整大小。結(jié)果,我們得到了:

定義添加日志行的方法
我們的應用程序必須易于使用,這就是為什么我們要直接從位于應用程序主頁上的輸入控件中添加新的日志行。
這個新屏幕是屏幕的第二個邏輯區(qū)域,因此我們定義了一個新視圖,以將Label封裝為標題,將TextField封裝為添加日志行,并以LineShape控件作為分隔符。TextField控件是單行輸入控件:

通過數(shù)據(jù)庫查詢在表視圖中顯示日志行
主窗口的第三個區(qū)域是“表格視圖”。在其中,我們希望顯示到目前為止添加的所有幸福日志行,在這種情況下,由于沒有一個UI控件,因此不顯示“視圖”。
現(xiàn)在Window1,TableView1在其上放一個Table View ,然后進入Layout面板。我們想要將此表視圖綁定到可以顯示所有日志行的數(shù)據(jù)庫查詢,然后執(zhí)行SQLiteDatabase1前面定義的操作,并添加一個Query- Query1:

使用Creo將查詢添加到SQLite數(shù)據(jù)庫非常簡單。
我們從“對象”檢查器中打開“查詢編輯器”,然后將“帖子”表拖放到查詢區(qū)域。因為我們想以相反的順序獲取日志行,所以我們將其添加ORDER BY date DESC到原始查詢中,并得到以下查詢:

現(xiàn)在,我們運行查詢以檢查一切正常,在這種情況下,我們得到一個空列表。讓我們保存它,然后將焦點TableView1再次移至該位置。查看對象檢查器,我們現(xiàn)在看到SQLiteDatabase1.Query1在數(shù)據(jù)集屬性列表中。 我們選擇此數(shù)據(jù)集,然后更改一些屬性值:
像元高度為55像素
將Text屬性映射到body,Detail Text映射到date并清除Image屬性的單元格屬性。
讓Identifier屬性為id。
如何將日志行記錄添加到數(shù)據(jù)庫
當我們向TextField1控件中寫入內(nèi)容并按iPhone鍵盤上的Enter鍵時,我們希望將此文本(日志行)保存在Posts表中。
在這種情況下,Text Field控件允許我們攔截控件的DidTapReturn事件TextField1,這對于我們的情況而言是完美的:

我們將變量定義為DatabaseRecord,然后將Posts表屬性之一綁定body到該TextField1值。然后,我們將此記錄添加到Posts表中,清理TextField1內(nèi)容,然后重新加載Table View。
我們可以在Creo仿真器中運行該應用程序,以檢查是否一切都按預期方式運行,并且可以正常運行-我添加了兩條日志行來測試該應用程序:

如何在單獨的窗口中顯示日志行詳細信息
現(xiàn)在我們可以向數(shù)據(jù)庫中添加日志行了,我們希望點擊日志行并在新窗口中顯示它-因為日志行可以長于TableView控件顯示的20-25個字符。
那很容易。我們添加一個Window2容器,然后放一個Button(將用戶導航回到主窗口),Label(標簽)以顯示日志行date,以及TextView(文本視圖)以顯示日志行body。我更改了一些屬性使其更漂亮:

為了告訴Window2您顯示特定的日志行,我們需要將日志行傳遞id到窗口。我們需要的是其中的自定義屬性Window2,我們將其稱為id。
為了Window2在用戶每次點擊日志行時顯示,我們需要管理控件的DidSelectCell事件TableView1。在那里,我們可以將任何參數(shù)傳遞給 Window2:

使用相同的技術(shù),我們也可以輕松地傳遞body和date屬性。相反,我們決定使用id 來從數(shù)據(jù)庫中檢索其他記錄屬性-這樣我們就可以練習如何訪問數(shù)據(jù)。
鑒于事件id是,加載日志行詳細信息的理想場所。在這種情況下,我們需要創(chuàng)建一個SQL語句:WillShowWindow2

還有一件事。要完成此用例,我們需要Window2在用戶按下“后退”按鈕時關(guān)閉。因此,我們向后退按鈕事件添加了Window2.close()通話 Action。
注意:在此期間,我還更改了后退按鈕的顏色和字體,使其更加整潔。
現(xiàn)在,我們可以在CreoPlayer或模擬器中運行該應用程序,將一些快樂的時刻添加到我們的列表中,然后逐一進行導航。
如何從數(shù)據(jù)庫中刪除記錄
要與iPhone上的列表中的記錄進行交互,我們習慣于向左或向右滑動記錄,并顯示默認操作-在我們的情況下為刪除。
好吧,使用Creo獲得這種行為真的很容易。展開TableView1控件,選擇Cell1添加一個Right Action。多么酷啊?

現(xiàn)在Action,在RightAction1元素事件中添加幾行代碼,我們做到了:

等待!如果我們?yōu)g覽日志行詳細信息,我們可以看到它仍然是可編輯的。
這是因為我們忘記取消財產(chǎn)Allows editing的的TextView1控制,看到在Object Inspector。
現(xiàn)在我們很好。