QuickDialog能夠幫助開發者快速建立複雜的表單,實現包括登陸界面在內的各類樣式的TableView輸入界面,此外,還能夠建立帶有多個文本域的表格及項目。
QuickDialog經過對數據元素的峯值封裝,根據不一樣元素的使用來簡化UITableView的使用。
爲了使用QuickDialog你必須知道三個不一樣的類:
QuickDialogController——是UITableViewController的子類,用於顯示對話框在你的應用中你可能會創建這個類的子類來顯示。
QRootElement——一個對話框的根元素,sections與cells的容器,用戶顯示用戶數據。每個QuickDialogController一次只能夠顯示一個RootElement。能夠包含其餘的rootElement的。
QElement——一個element映射一個UItableViewCell,儘管它包括更多的功能,像可以從cell中讀取值和有多個類型。QuickDialog也提供了多種內建element type,像 ButtonElement 和 EntryElement,但你也可以建立本身的element。
一 關於Elements
QuickDialog 提供了能夠應用於app的不少不一樣elements。
QLabelElement: 簡單的內建鍵值對映射
QBadgeElement: 想label cell,但值是做爲一個徽標顯示的
QBooleanElement: 顯示一個開關
QButtonElement: 在中間顯示一個標題想一個button同樣
QDateTimeElement:容許你編輯dates,time,或者date + time值。編輯發生在新樸實出來的viwController中。
QEntryElement: 輸入字段,容許你收集用戶的信息。能夠自動擴展。
QDecimalElement: 很是想一個可輸入的field,可是隻容許輸入數字。能夠預約義輸入的精度。
QFloatElement: 顯示一個滑動欄
QMapElement: 當被選中時,顯示一個有location的全屏地圖,須要經緯度值。
QRadioElement:容許用戶從多個可利用的選項中選擇一個。自動push一個新的有已被選中的item的table。
QTextElement: 可提供字體渲染的自由文本
QWebElement: push一個在element中定義URL的簡單瀏覽頁面。
下面看下QuickDialog中element的繼承關係:
element 關係圖
二 關於Sections
sections 是一個簡單的elements分組,默認狀況下有一下幾種特性:
title/footer:頁眉/頁腳部分顯示爲簡單的字符串
headerView/footerView:這種狀況下,Views能夠替換掉titles的顯示,能夠簡單的顯示圖片或自定義的Views
關於sections的結構圖以下:
QRadioSection:內聯的顯示多個選項,而不是到另外一個UIViewController中。
QSortingSection:自動在sections中對cells進行排序。
三 關於自定義的UITableViewCell
在QuickDialog中自定義了一部分的UITableViewCell,來對應於定義的elements。其結構以下:
四 關於QuickDialog的使用
集成QucikDialog到項目中:
最簡單的方法是把quickDialog做爲git子模塊添加到你的現有工程中,而後做爲一部分導入到project中。
Terminal:
cd *your-project-location*
git submodule add git@github.com:escoz/QuickDialog.git
這種方法是從github中自動copy的,所以你在未來能夠方便的更新。
在XCode中:
打開已存在的project(或者建立個新的)
把從github分支上下載的QuickDialog.xcodeproj拖拽到你的工程中(root或framework下)
在工程配置下:
在Build Phases,添加QuickDialog(the lib, not the example app)做爲目標依賴
在Build Phases->Link binary with libraries下,添加這兩個庫:MapKit.framework and CoreLocation.framework
在Link binary with libraries下添加這個QuickDialog.a靜態庫
在你的prefix.pch未見中,添加#import <QuickDialog/QuickDialog.h>
在你的工程配置中的「Build Settings」下
本地的"User Header Search Paths"設置,並設置值爲"${PROJECT_DIR}/QuickDialog"(包括引號!)而且勾選"Recursive"選項。
Debug值應當已經被設置,若是沒有,修改它。
本地的 「Always Search User Paths」設置爲YES
最後找到 「Other Linker Flags」選擇項,而且添加至-ObjC
OK,that should be all there is.
Here’s how you can create and display your first dialog from inside another UIViewController:
QRootElement *root = [[QRootElement alloc] init];
root.title = @"Hello World";
root.grouped = YES;
QSection *section = [[QSection alloc] init];
QLabelElement *label = [[QLabelElement alloc] initWithTitle:@"Hello" Value:@"world!"];
[root addSection:section];
[section addElement:label];
UINavigationController *navigation = [QuickDialogController controllerWithNavigationForRoot:root]; [self presentModalViewController:navigation animated:YES];
The code above will create the form below:
五:QuickDialog的數據交互
因爲QuickDialog是經過對數據的封裝實現對UI的控制的,因此要得到數據的話有兩種方式,一種是直接經過elements的屬性獲取,一種是經過bind的對應鍵值來使用fetchValueUsingBindingsIntoObject來拉去的。這樣的話必須bind中的key與放入對象的attribute的名稱要一直,不然會拉去不到crash。
對QuickDialogTableView的點擊事件能夠直接設置block來進行控制,這樣較容易控制的。git