瘋狂ios講義之選擇器(UIPickerView)
UIPickerView也是一個選擇器控制元件,它比UIDatePicker更加通用,它可以生成單列的選擇器,也可生成多列的選擇器,而且開發者完全可以自定義選擇項的外觀,因此用法非常靈活。
UIPickerView直接繼承了UIView,沒有繼承UIControl,因此,它不能像UIControl那樣繫結事件處理方法,UIPickerView的事件處理由其委託物件完成。
UIPickerView控制元件常用的屬性和方法如下。
ØnumberOfComponents:獲取UIPickerView指定列中包含的列表項的數量。該屬性是一個只讀屬性。
ØshowsSelectionIndicator
Ø- numberOfRowsInComponent::獲取UIPickerView包含的列數量。
Ø- rowSizeForComponent::獲取UIPickerView包含的指定列中列表項的大小。該方法返回一個CGSize物件。
Ø- selectRow:inComponent:animated::該方法設定選中該UIPickerView中指定列的特定列表項。最後一個引數控制是否使用動畫。
Ø- selectedRowInComponent::該方法返回該UIPickerView指定列中被選中的列表項。
Ø- viewForRow:forComponent::該方法返回該UIPickerView指定列的列表項所使用的UIView控制元件。
UIDatePicker控制元件只是負責該控制元件的通用行為,而該控制元件包含多少列,各列包含多少個列表項則由UIPickerViewDataSource物件負責。開發者必須為UIPickerView設定UIPickerViewDataSource物件,並實現如下兩個方法。
Ø- numberOfComponentsInPickerView::該UIPickerView將通過該方法來判斷應該包含多少列。
Ø- pickerView:numberOfRowsInComponent:
如果程式需要控制UIPickerView中各列的寬度,以及各列中列表項的大小和外觀,或程式需要為UIPickerView的選中事件提供響應,都需要為UIPickerView設定UIPickerViewDelegate委託物件,並根據需要實現該委託物件中的如下方法。
Ø- pickerView:rowHeightForComponent::該方法返回的CGFloat值將作為該UIPickerView控制元件中指定列中列表項的高度。
Ø- pickerView:widthForComponent::該方法返回的CGFloat值將作為該UIPickerView控制元件中指定列的寬度。
Ø- pickerView:titleForRow:forComponent::該方法返回的NSString值將作為該UIPickerView控制元件中指定列的列表項的文字標題。
Ø- pickerView:viewForRow:forComponent:reusingView::該方法返回的UIView控制元件將直接作為該UIPickerView控制元件中指定列的指定列表項。
Ø- pickerView:didSelectRow:inComponent::當用戶單擊選中該UIPickerView控制元件的指定列的指定列表項時將會激發該方法。
Interface Builder只支援為UIPickerView設定一個屬性——Shows Selection Indicator,該屬性用於控制是否顯示UIPickerView中的選中標記(以高亮背景作為選中標記)。
下面通過程式來介紹UIPickerView 的功能和用法。
對於單列選擇器,只要控制UIPickerView的dataSource物件的numberOfComponentsInPickerView:方法返回1即可。
下面建立一個單列選擇器,首先建立一個Single View Application,使用Interface Builder開啟應用的介面設計檔案,並將一個UIPickerView拖入介面設計檔案中,為在程式中訪問該控制元件,需要將該控制元件繫結到picker IBOutlet屬性。
接下來開始修改控制器類,本例打算使用控制器類作為UIPickerView的dataSource和delegate,因此,程式需要讓控制器類實現UIPickerViewDataSource、UIPickerViewDelegate兩個協議。
修改控制器類的實現程式碼,主要就是實現UIPickerViewDataSource、UIPickerViewDelegate兩個協議中的必要方法,其程式碼如下。
程式清單:codes/10/10.12/UIPickerViewTest/UIPickerViewTest /FKViewController.m
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
@implementation FKViewController
NSArray* books;
- ( void )viewDidLoad
{
[super viewDidLoad];
// 建立並初始化NSArray物件
books = [NSArray arrayWithObjects:@ "瘋狂Android講義" ,
@ "瘋狂iOS講義" , @ "瘋狂Ajax講義"
, @ "瘋狂XML講義" , nil];
// 為UIPickerView控制元件設定dataSource和delegate
self.picker.dataSource = self;
self.picker.delegate = self;
}
// UIPickerViewDataSource中定義的方法,該方法的返回值決定該控制元件包含多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
return
1; // 返回1表明該控制元件只包含1列
}
// UIPickerViewDataSource中定義的方法,該方法的返回值決定該控制元件指定列包含多少個列表項
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
// 由於該控制元件只包含一列,因此無須理會列序號引數component
// 該方法返回books.count,表明books包含多少個元素,該控制元件就包含多少行
return
books.count;
}
// UIPickerViewDelegate中定義的方法,該方法返回的NSString將作為UIPickerView
// 中指定列和列表項的標題文字
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
// 由於該控制元件只包含一列,因此無須理會列序號引數component
// 該方法根據row引數返回books中的元素,row引數代表列表項的編號,
// 因此該方法表示第幾個列表項,就使用books中的第幾個元素
return
[books objectAtIndex:row];
}
// 當用戶選中UIPickerViewDataSource中指定列和列表項時激發該方法
- ( void )pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component
{
// 使用一個UIAlertView來顯示使用者選中的列表項
UIAlertView* alert = [[UIAlertView alloc]
initWithTitle:@ "提示"
message:[NSString stringWithFormat:@ "你選中的圖書是:%@"
, [books objectAtIndex:row]]
delegate:nil
cancelButtonTitle:@ "確定"
otherButtonTitles:nil];
[alert show];
}
@end
|
上面的程式首先初始化了一個NSArray,接下來的關鍵就是實現了4個用粗體字表示的方法,其中有兩個方法來自UIPickerViewDataSource協議,分別用於控制該UIPickerView控制元件包含多少列、各列包含多少個列表項;另兩個方法則來自UIPickerViewDelegate,最後一個粗體字方法負責為UIPickerView控制元件的選中事件提供響應——當用戶選中該UIPickerView的某個列表項時,系統將會自動激發該方法,該方法的實現邏輯就是使用UIAlertView顯示使用者選擇的圖書。
編譯、執行該程式,可以看到如圖10.46所示的效果。
圖10.46 單列UIPickerView
如果使用者選擇某個列表項,程式將會彈出如圖10.47所示的UIAlertView警告框。
圖10.47 選中指定項
10.12.2多列選擇器
對單列選擇器而言,只要控制UIPickerView的dataSource物件的numberOfComponentsInPickerView:方法返回大於1的整數即可。
本節建立一個多列選擇器,首先建立一個Single View Application,使用Interface Builder開啟應用的介面設計檔案,並將一個UIPickerView拖入介面設計檔案中,為在程式中訪問該控制元件,需要將該控制元件繫結到picker IBOutlet屬性。
接下來修改控制器類,本例打算使用控制器類作為UIPickerView的dataSource和delegate,因此程式需要讓控制器類實現UIPickerViewDataSource、UIPickerViewDelegate兩個協議。
修改控制器類的實現程式碼,主要就是實現UIPickerViewDataSource、UIPickerViewDelegate兩個協議中的必要方法,其程式碼如下。
程式清單:codes/10/10.12/MultiPickerTest/MultiPickerTest/FKViewController.m
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
@implementation FKViewController
NSArray* books;
NSArray* authors;
- ( void )viewDidLoad
{
[super viewDidLoad];
// 建立並初始化兩個NSArray物件,分別作為兩列的資料
authors = [NSArray arrayWithObjects:@ "泰戈爾" ,
@ "馮夢龍" , @ "李剛"
, nil];
books = [NSArray arrayWithObjects:@ "飛鳥集"
, @ "吉檀迦利"
, @ "醒世恆言" ,@ "喻世明言" , @ "警世通言" ,
@ "瘋狂Android講義" ,
@ "瘋狂iOS講義" , @ "瘋狂Ajax講義"
, @ "瘋狂XML講義" , nil];
self.picker.dataSource = self;
self.picker.delegate = self;
}
// UIPickerViewDataSource中定義的方法,該方法返回值決定該控制元件包含多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
return
2; // 返回2表明該控制元件只包含2列
}
// UIPickerViewDataSource中定義的方法,該方法的返回值決定該控制元件指定列包含多少個列表項
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
// 如果是第一列,返回authors中元素的個數
// 即authors包含多少個元素,第一列就包含多少個列表項
if
(component == 0) {
return
authors.count;
}
// 如果是其他列,返回books中元素的個數。
// 即books包含多少個元素,其他列(只有第二列)包含多少個列表項
return
books.count;
}
// UIPickerViewDelegate中定義的方法,該方法返回的NSString將作為
// UIPickerView中指定列和列表項上顯示的標題
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:
(NSInteger)row forComponent:(NSInteger)component
{
// 如果是第一列,返回authors中row索引處的元素
// 即第一列的列表項標題由authors集合元素決定
if
(component == 0) {
return
[authors objectAtIndex:row];
}
// 如果是其他列(只有第二列),返回books中row索引處的元素
// 即第二列的列表項標題由books集合元素決定
return
[books objectAtIndex:row];
}
// 當用戶選中UIPickerViewDataSource中指定列和列表項時激發該方法
- ( void )pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component
{
NSArray* tmp = component == 0 ? authors: books;
NSString* tip = component == 0 ? @ "作者" : @ "圖書" ;
// 使用一個UIAlertView來顯示使用者選中的列表項
UIAlertView* alert = [[UIAlertView alloc]
initWithTitle:@ "提示"
message:[NSString stringWithFormat:@ "你選中的%@是:%@,"
, tip, [tmp objectAtIndex:row]]
delegate:nil
cancelButtonTitle:@ "確定"
otherButtonTitles:nil];
[alert show];
}
// UIPickerViewDelegate中定義的方法,該方法返回的NSString將作為
// UIPickerView中指定列的寬度
- (CGFloat)pickerView:(UIPickerView *)pickerView
widthForComponent:(NSInteger)component
{
// 如果是第一列,寬度為90
if
(component == 0) {
return
90;
}
return
210; // 如果是其他列(只有第二列),寬度為210
}
@end
|
該程式與前一個程式基本相似,同樣需要實現上面4個方法,只是numberOfComponentsInPickerView:方法返回了2,因此,該UIPickerView包含兩列,程式建立了兩個NSArray,分別為兩列提供資料項。除此之外,上面的程式還實現了一個pickerView:widthForComponent:方法,該方法的返回值控制UIPickerView中各列的寬度。
編譯、執行該程式,可以看到如圖10.48所示的兩列選擇器。
如果使用者選中指定的列表項,該應用同樣會彈出UIAlertView顯示使用者的選擇,彈出的警告框與圖10.47類似。
10.12.2節的示例雖然是一個兩列的UIPickerView控制元件,但該控制元件的兩列基本沒有任何關係,選擇第一列的作者時,第二列的圖書不會動態更新——在某些情況下,這是允許的。但在某些情況下,我們需要第二列的列表項依賴第一列的選擇,即當第一列選擇作者時,第二列只顯示該作者的圖書。
為了讓第二列能根據第一列的選擇動態載入,程式需要使用者選擇第一列的事件,並根據該事件動態載入第二列的資料,然後強制重新載入UIDatePicker的第二列列表項。
下面建立一個相互依賴的多列選擇器,首先建立一個Single View Application,使用Interface Builder開啟應用的介面設計檔案,並將一個UIPickerView拖入介面設計檔案中,為在程式中訪問該控制元件,需要將該控制元件繫結到picker IBOutlet屬性。
接下來開始修改控制器類,本例使用控制器類作為UIPickerView的dataSource和delegate,因此,程式需要讓控制器類實現UIPickerViewDataSource、UIPickerViewDelegate兩個協議。
修改控制器類的實現程式碼,主要就是實現UIPickerViewDataSource、UIPickerViewDelegate兩個協議中的必要方法,其程式碼如下。
程式清單:codes/10/10.12/MultiPickerTest2/MultiPickerTest2/FKViewController.m
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
@implementation FKViewController
NSDictionary* books;
NSArray* authors;
// selectedAuthor儲存當前選中的作者
NSString* selectedAuthor;
- ( void )viewDidLoad
{
[super viewDidLoad];
// 建立並初始化NSDictionary物件
books = [NSDictionary dictionaryWithObjectsAndKeys:
[NSArray arrayWithObjects:@ "飛鳥集"
, @ "吉檀迦利" , nil]
, @ "泰戈爾" ,
[NSArray arrayWithObjects:@ "醒世恆言" ,@ "喻世明言"
, @ "警世通言" , nil] , @ "馮夢龍" ,
[NSArray arrayWithObjects:@ "瘋狂Android講義" ,
@ "瘋狂iOS講義" , @ "瘋狂Ajax講義"
, @ "瘋狂XML講義" , nil]
, @ "李剛"
,nil];
// 使用authors儲存books所有key組成的NSArray排序後的結果
authors = [[books allKeys] sortedArrayUsingSelector:
@selector(compare:)];
// 設定預設選中的作者authors中的第一個元素
selectedAuthor = [authors objectAtIndex:0];
self.picker.dataSource = self;
self.picker.delegate = self;
}
// UIPickerViewDataSource中定義的方法,該方法的返回值決定該控制元件包含多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
return
2; // 返回2表明該控制元件只包含2列
}
// UIPickerViewDataSource中定義的方法,該方法的返回值決定該控制元件指定列包含多少個列表項
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
// 如果是第一列,返回authors中元素的個數
// 即authors包含多少個元素,第一列包含多少個列表項
if
(component == 0) {
return
authors.count;
}
// 如果是其他列(只有第二列),
// 返回books中selectedAuthor對應的NSArray中元素的個數
return
[[books objectForKey:selectedAuthor] count];
}
// UIPickerViewDelegate中定義的方法,該方法返回的NSString將作為
// UIPickerView中指定列和列表項上顯示的標題
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:
(NSInteger)row forComponent:(NSInteger)component
{
// 如果是第一列,返回authors中row索引處的元素
// 即第一列的元素由authors集合元素決定
if
(component == 0) {
return
[authors objectAtIndex:row];
}
// 如果是其他列(只有第二列),
// 返回books中selectedAuthor對應的NSArray中row索引處的元素
return
[[books objectForKey:selectedAuthor] objectAtIndex:row];
}
// 當用戶選中UIPickerViewDataSource中指定列和列表項時激發該方法
- ( void )pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
if (component == 0)
{
// 改變被選中的作者
selectedAuthor = [authors objectAtIndex:row];
// 控制重寫載入第二個列表,根據選中的作者來載入第二個列表
[self.picker reloadComponent:1];
}
NSArray* tmp = component == 0 ? authors:
[books objectForKey:selectedAuthor];
NSString* tip = component == 0 ? @ "作者" : @ "圖書" ;
// 使用一個UIAlertView來顯示使用者選中的列表項
UIAlertView* alert = [[UIAlertView alloc]
initWithTitle:@ "提示"
message:[NSString stringWithFormat:@ "你選中的%@是:%@,"
, tip , [tmp objectAtIndex:row]]
delegate:nil
cancelButtonTitle:@ "確定"
otherButtonTitles:nil];
[alert show];
}
// UIPickerViewDelegate中定義的方法,該方法返回的NSString將作為
// UIPickerView中指定列的寬度
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:
(NSInteger)component
{
// 如果是第一列,寬度為90
if
(component == 0) {
return
90;
}
return
210; // 如果是其他列(只有第二列),寬度為210
}
@end
|
上面控制器類的實現部分與前一個示例中控制器類的實現部分大致相同,關鍵就是程式中的粗體字程式碼。本程式採用了NSDictionary分別儲存NSPickerView控制元件中的兩列資料,NSDictionary的所有key組成的集合作為第1列的資料,當用戶選中第一列的某個作者後,程式取出NSDictionary中該作者對應的圖書集合作為第二列的資料。這就可以讓第二列資料隨第一列的選擇動態改變。
編譯、執行該程式,在第一列中選中某個作者,可以看到如圖10.49所示的效果。
如果使用者選中指定的列表項,該應用同樣會彈出UIAlertView顯示使用者的選擇,彈出的警告框與圖10.47類似。
前面示例看到的所有列表項都是文字形式,實際上,UIPickerView允許開發者對列表項進行任意定製。開發者只要實現UIPickerViewDelegate協議中的-pickerView:viewForRow:forComponent: reusingView:方法即可,該方法返回的UIView將作為UIPickerView指定列和列表項的檢視控制元件。
下面以一個簡單的“老虎機”遊戲例項來示範自定義選擇器檢視的用法。
首先建立一個Single View Application,使用Interface Builder開啟應用的介面設計檔案,並將一個UIPickerView拖入介面設計檔案中,再將一個UIImageView和一個UIButton拖入應用介面中,然後將這三個控制元件擺放整齊。為了在程式中訪問這三個控制元件,分別將它們繫結到picker、image、startBn這三個IBAction屬性。除此之外,程式還需要響應按鈕的點選事件,因此為該按鈕控制元件的Touch Up Inside事件繫結clicked:事件處理方法。
提示:
“老虎機”遊戲的列表項都是圖示,則需要為該例項準備一些圖示——讀者既可用本例項提供的圖示,也可用自己選擇的圖示,但圖示不要太大,以小於60畫素×60畫素為宜,將這些圖示拖入應用中即可。
接下來開始修改控制器類,本例使用控制器類作為UIPickerView的dataSource和delegate,因此程式需要讓控制器類實現UIPickerViewDataSource、UIPickerViewDelegate兩個協議。除此之外,程式需要分別為UIPickerView的5列準備資料,因此程式在控制器類的介面部分定義了5個NSArray屬性,其程式碼如下。
程式清單:codes/10/10.12/CustomPicker/CustomPicker/FKViewController.h
相關推薦
瘋狂ios講義之選擇器(UIPickerView)
UIPickerView也是一個選擇器控制元件,它比UIDatePicker更加通用,它可以生成單列的選擇器,也可生成多列的選擇器,而且開發者完全可以自定義選擇項的外觀,因此用法非常靈活。 UIPickerView直接繼承了UIView,沒有繼承UIControl,因此,它不能像UIControl那樣繫結
iOS 之選擇器(Selector)
1 前言 本文是一篇關於選擇器(Selector)的文章,Selector可以理解為一個方法名,具體見下文。 2 詳述 Selector是一個物件中用來選擇方法來執行的名字,或者是當原始碼編譯時候用來替換名字的唯一的標示。Selector自己並不
CSS3學習系列之選擇器(二)
計算 選擇器 sky :focus ddr gree for 指定元素 學習 first-child選擇器和last-child選擇器 first-child指定第一個元素。last-child指定最後一個子元素。 例如: <!DOCTYPE html>
CSS選擇器之兄弟選擇器(~和+)
spa 例子 inf 代碼 但是 info 發現 效果 說話 今天在改以以前人家寫的網頁的樣式的時候,碰到這個選擇器,‘~’,當時我是懵逼的,傻傻分不清 ‘+’ 跟 ‘~’的區別,雖然我知道他們都是
瘋狂ios講義之例項:通過捏合手勢縮放圖片
例項:通過捏合手勢縮放圖片 捏合手勢處理器可以檢測到使用者手勢捏合的比例,解析該捏合比例即可對圖片進行縮放。本例項將通過捏合手勢對圖片進行縮放。建立一個Single View Application,該應用包含一個應用程式委託類、一個檢視控制器類以及配套的Main.storyboard介面
Android開發之狀態選擇器(selector)詳解
這些天博主的專案進度比較快,現在伺服器那端進度較慢,所以博主晚上最近會比較有時間,所以最近會多寫些部落格出來和大家分享~希望能夠幫助到大家。 所謂狀態選擇器,就是控制元件(view或者viewgroup)的狀態發現變化的時候,我們可以再指定的狀態下,切換控制元件的背景屬性(
jQuery UI 日期選擇器(Datepicker)
jquery ui next ext style cti cto log href region 設置JqueryUI DatePicker默認語言為中文 <!doctype html><html lang="en"> <head&g
css3新特性選擇器(補充)
last inpu child 一行 標簽 after 第一個 ren 得到 1.選擇p標簽中的第一個字符 p:first-letter{ color:red; font-size:25px; } 2.選擇p標簽中的第一行 p:first-line{ color:red
jQuery UI 實例 - 日期選擇器(Datepicker)
for cal 周四 radi panel alternate 可能 max 輸入 默認功能 日期選擇器(Datepicker)綁定到一個標準的表單 input 字段上。把焦點移到 input 上(點擊或者使用 tab 鍵),在一個小的覆蓋層上打開一個交互日歷。選擇一個日期
Selenium2+python-unittest之裝飾器(@classmethod)
selenium self selenium2 def tex 驗證 drive sts ttr 原文地址:http://www.cnblogs.com/yoyoketang/p/6685416.html 前言 前面講到unittest裏面setUp可以在每次執行用例前執行
css選擇器(基礎)
掌握 class 就是 content tle 版本 語法 tex 人物 CSS選擇器: 一個樣式的語法是由選擇器+屬性+屬性值三部分組成; 到底什麽是選擇器呢? 答:個人直白的理解為:選擇一種要對它進行操作的標簽的方法就叫做選擇器。也就是說選擇器就
Selenium2+python自動化55-unittest之裝飾器(@classmethod)【轉載】
con 關閉 ext 元素 實現 bdr nav expec 裏的 本篇轉自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ 前言 前面講到unittest裏面setUp可以在每次執行用例前執行,這樣
CSS(CSS3)選擇器(1)
cti str 插入 link 規則 padding 不可 情況 可能 這篇文章主要用於存儲CSS以及CSS3的選擇器部分知識,以便日後查閱及記憶. 該內容分為兩部分,第一部分為css選擇器的一些基本知識。第二部分為CSS3新增加的選擇器。 在開始之前,先簡單介紹一下選擇器
CSS(CSS3)選擇器(2)
for 字符 tutorials pty disable post input purple enabled 該部分主要為CSS3新增的選擇器 接上一篇 CSS(CSS3)選擇器(1) 一.通用兄弟選擇器: 24:E ~
Selenium2+python自動化55-unittest之裝飾器(@classmethod)
1.0 ... 區別 就會 pytho 想是 col http -c 前言 前面講到unittest裏面setUp可以在每次執行用例前執行,這樣有效的減少了代碼量,但是有個弊端,比如打開瀏覽器操作,每次執行用例時候都會重新打開,這樣就會浪費很多時間。 於是就想是不是可以只打
CSS樣式選擇器(1)
class 是按照 同類型 來歸類HTML的各種元素的,要把某些元素歸為一類,一般會考慮到下面這些因素: 它們具有同樣的樣式,比如不管他們的標籤是什麼,h1 或者是 div,但是字型大小都是 16px; 它們是一種具有同樣意義的東西,比如我們做網站,一般首頁的 LOGO
AngularJS之定時器(timeout)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Java中的經典演算法之選擇排序(SelectionSort)
Java中的經典演算法之選擇排序(SelectionSort) 神話丿小王子的部落格主頁 a) 原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最後,直到全部記錄排序完畢。也就是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基
Java中的經典算法之選擇排序(SelectionSort)
變量 www. cnblogs tar mage clas html 技術 循環語句 Java中的經典算法之選擇排序(SelectionSort) 神話丿小王子的博客主頁 a) 原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最後,直到全部記錄排序完畢。也
css選擇器(一)基本選擇器
基本選擇器 1、通用元素選擇器 *表示應用到所有的標籤。 *{ padding:0px; margin:0px; } 2、元素/標籤選擇器 匹配所有p標籤的元素 p{ color:red; background:yellow; } 3、類選擇器