溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

iOS 導(dǎo)航控制器和表視圖

發(fā)布時間:2020-05-17 13:12:57 來源:網(wǎng)絡(luò) 閱讀:575 作者:HDDevTeam 欄目:移動開發(fā)


   導(dǎo)航控制器和表視圖密不可分,在實際的應(yīng)用程序中實現(xiàn)導(dǎo)航控制器,幾乎總要實現(xiàn)至少一個表,因為導(dǎo)航控制器的強大之處在于它能夠處理復(fù)雜的分層數(shù)據(jù),在iphone上,連續(xù)的表視圖是表示分層數(shù)據(jù)最理想的分層方式。

導(dǎo)航控制器使用內(nèi)置動畫在視圖之間順利移動,無需編寫歷史紀錄控制,導(dǎo)航控制器會自動處理Back按鈕時間,讓用戶“岀?!?。

UINavigationController是構(gòu)建分層應(yīng)用的主要工具,與UITabBarController很類似,但是前者是以棧來實現(xiàn)功能,關(guān)于棧,我們并不陌生,遵守先進后出的原則,向棧中添加一個對象為入棧,從棧中刪除一個對象叫出棧。

UINavigationController是構(gòu)建分層應(yīng)用程序的主要工具。本次的應(yīng)用程序?qū)⒂梢粋€導(dǎo)航控制器和六個子控制器組成。

如何把表視圖中的數(shù)據(jù)寫入子表中;

.如何把表視圖中的數(shù)據(jù)寫入可以讀取甚至可以編輯詳細數(shù)據(jù)的內(nèi)容視圖中;

.如何通過表清單來從多個值中進行選擇;

.如何通過編輯模式從表視圖中刪除行。


下面是觸摸頂級試圖第一行Disclosure Butttons時出現(xiàn)的界面(第一個視圖右側(cè)的擴展圖標被稱為是擴展指示器,用于告知用戶觸摸這一行將切換到另一個表視圖),其他幾個試圖都是如此。


iOS 導(dǎo)航控制器和表視圖iOS 導(dǎo)航控制器和表視圖iOS 導(dǎo)航控制器和表視圖


         iOS 導(dǎo)航控制器和表視圖                     iOS 導(dǎo)航控制器和表視圖                iOS 導(dǎo)航控制器和表視圖

在編輯過程中需注意以下幾點:

1)列表只顯示來自數(shù)組的多個行,因此需要聲明一個數(shù)組實現(xiàn)表視圖時需要遵從兩個協(xié)議UITableViewDelagateUITableViewDataSource,類需要這兩個協(xié)議來充當表視圖的委托和數(shù)據(jù)源,然后聲明一個數(shù)組用于放置將要顯示的數(shù)據(jù)。

@interface Disclosure_Buttons :    UIViewController<UITableViewDelegate,UITableViewDataSource>

{

NSArray *listData;

}

2)方法返回數(shù)組計數(shù)個數(shù):

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return [listDatacount];

}


3) 方法獲取一個可重用單元,如果單元不存在則創(chuàng)建一個新的單元。然后從對應(yīng)查詢的數(shù)組中獲取對象,將單元的文本設(shè)置成控制器標題并返回單元

- (UITableViewCell *)tableView:(UITableView *)tableView

cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

staticNSString*DisclosureCellIdentifier = @"DisclosureCellIdentifier";

UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:DisclosureCellIdentifier];

if (cell == nil)

   {//創(chuàng)建一個新的單元

   cell=[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:DisclosureCellIdentifier];

}

//對應(yīng)查詢數(shù)組中獲取的對象,將單元文本設(shè)置成控制器標題并返回單元

NSUInteger row=[indexPath row];

NSString *rowData=[listDataobjectAtIndex:row];

   cell.textLabel.text=rowData;

cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton;

return cell;

}

4) tableView:didSelectRowAtIndexPath:方法是用戶單擊某行后調(diào)用的方法,如果在調(diào)用時需要觸發(fā)信息展開,則調(diào)用此方法


5tableView:editingStyleForRowAtIndexPath

方法是表視圖可以查詢指定行是否可以進行刪除,是否可以將新行插入到指定位置。

通過返回UITableViewEditingStyleNone表示不支持插入和刪除行。

iOS 導(dǎo)航控制器和表視圖iOS 導(dǎo)航控制器和表視圖

iOS 導(dǎo)航控制器和表視圖

6從屬性表中加載數(shù)據(jù)

-(void)viewDidLoad{

NSString *path=[[NSBundlemainBundle] pathForResoure:@"computers" ofType:@"plist"];

NSMutableArray *array=[[NSMutableArrayalloc] initWithContentsOfFile:path];

self.list=array;

   [array release];

   [superviewDidLoad];

}


7UITableViewCellEditingStyleNone:不允許被編輯

UITableViewCellEditingStyleDelete:允許刪除

UITableViewCellEditingStyleInsert:允許插入


8encodeWithCoder:方法把對象編碼為歸檔文件

initWithCoder:方法從歸檔文件中創(chuàng)建新的對象


9UITextFieldDelegate:通過遵循這個協(xié)議,當用戶對某個字段做出修改時,會得到通知并保存修改。



向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI