5.8 DataLogging Form
5.8.5 Cách sử dụng UITableView để hiện thị dữ liệu
TableView được sử dụng rất nhiều trong các thiết bị iPhone, iPad để hiển thị dữ liệu. TableView được chia ra nhiều Section, mỗi section bao gồm các hàng chứa thông tin khác nhau.
Hình 5-50 Giao diện UITableView Để sử dụng được UITableView ta cần biết các hàm như sau:
Hàm giúp ta xác định số section trong 1 Table view:
-(NSInteger) numberOfSectionsInSection:(UITableView*)tableView {
return 1;
}
Hàm giúp xác định số dòng trong 1 TableView:
-
(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSIntege r)section{
return 0;
}
Hàm này cho ứng dụng biết table sẽ chứa bao nhiêu dòng. Hiện tại nó trả về 0. Chúng ta sẽ sửa lại thành return 1. Ta muốn ứng dụng sẽ hiển thị 1 dòng trên table.
Page 101 Hàm giúp ta định nghĩa những gì sẽ được hiển thị tại từng dòng:
Những gì mà hàm này đang làm là tạo ra một đối tượng cell và return đối tượng này. Đoạn mã trong khối if(cell==nil) kiểm tra xem chúng ta đã tạo ra một cell trước đó chưa. Nếu chưa, tạo một cell mới, còn không thì sử dụng cell đã tạo trước đó. Việc này giúp cho ứng dụng có performance tốt hơn vì ta không phải tạo ra cell mới mỗi lần chương trình gọi lại hàm này.
Trong chương trình mỗi dòng trong TableView được gọi là 1 Cell. Ở 1 Cell ta có thể add thêm các nút hay các Textfield để hiển thị thông tin. Ở đây ta Add 3 Textfield để hiện thị thông tin của 3 Tag mà người dùng Add.
Để quản lý các Cell ta cần phải tạo ra 1 file DataLoggingCell.h và
DataLoggingCell.m. Ở 2 file đó sẽ chứa các thông tin về Cell. Đây là đoạn Code hiển thị thông tin về các biến được sử dụng trong chương trình.
(NSIndexPath *)indexPath {static NSString *MyIdentifier = @”MyIdentifier”; UITa bleViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyI dentifier] autorelease];
}
// Set up the cell return cell; } [dataLoggingTags replaceObjectAtIndex:i withObject:dataLoggingTagTemp]; } else{ continue; } } stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
Page 102
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (!cell) {
cell = [[DataLoggingCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
cell.lblName1.text=[arrayCell1 objectAtIndex: (arrayCell1.count -[indexPath row]-1)];
cell.lblName2.text=[arrayCell2 objectAtIndex:(arrayCell2.count -[indexPath row]-
1)];
cell.lblName3.text=[arrayCell3 objectAtIndex: (arrayCell3.count -[indexPath row]-1)]; returncell; } else{ continue; } } stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
Page 103
Hình 5-51 Giao diện hiển thị dữ liệu của DataLogging