Tôi muốn đặt câu hỏi về UITableView của mục tiêu C. Tôi đang viết một chương trình và tôi muốn tạo giao diện người dùng theo lập trình. Tuy nhiên, tôi không biết cách hiển thị bảng theo lập trình. Tôi đã có một NSMutableArray để lưu trữ dữ liệu được hiển thị. Và tôi tạo một đối tượng UITableView *tableData;
, tôi nên làm gì cho bước tiếp theo? Cảm ơn nhiều.Làm thế nào để hiển thị UITableView theo chương trình?
Trả lời
sau khi viết mã trên, bạn phải triển khai phương thức ủy nhiệm của UITableView.
đây là những phương pháp đại biểu của tải UITableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [your array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
cell.textLabel.text = [yourarray objectAtIndex:indexPath.row];
return cell;
}
Something như thế này nên làm các trick (giả sử này đang chạy từ bên trong bộ điều khiển xem của bạn và bạn có một tài sản thiết lập cho xem bảng):
tableView = [[[UITableView alloc] initWithFrame:CGRectMake(...) style:UITableViewStylePlain] autorelease];
tableView.dataSource = self;
tableView.delegate = self;
[self.view addSubview:tableView];
đâu bạn thay thế CGRectMake(...)
với bất cứ vị trí/size bạn muốn.
cảm ơn bạn đã trả lời. Nhưng tôi muốn hỏi, tôi nên đặt NSMutableArray ở đâu? cảm ơn bạn. – Questions
Bạn sẽ lưu trữ mảng trong bộ điều khiển xem của bạn và sử dụng nó trong các phương thức UITableViewDataSource. Ví dụ, bạn sẽ trả về độ dài của mảng trong tableView: numberOfRowsInSection :. –
cảm ơn bạn đã trả lời. Bởi vì giao diện người dùng chứa các phần tử khác, tôi thêm UITableView như một phần của chúng. Và tôi không biết cách gọi UITableDataSource vì lớp không phải là lớp xem bảng khi tôi tạo nó. Bạn có muốn cho tôi biết cách nhập hoặc thêm dữ liệu trong mảng không? cảm ơn bạn. – Questions
- Tạo một lớp mới được thừa kế từ UIViewController.
- Làm cho phù hợp với giao thức UITableViewDataSource.
- Khai báo chế độ xem bảng của bạn.
tập tin tiêu đề của bạn nên được như sau:
@interface MyViewController : UIViewController <UITableViewDataSource> {
}
@property (nonatomic, retain) UITableView *tableView;
@end
Trong phương pháp viewLoad của lớp học của bạn:
- Tạo một cái nhìn bảng sử dụng initWithFrame. Sử dụng kích thước 320x460 cho chiều cao đầy đủ. Xóa 44 khỏi chiều cao nếu bạn có thanh điều hướng và 49 nếu bạn có thanh tab.
- Tạo chế độ xem mới.
- Thêm chế độ xem bảng vào chế độ xem mới.
- Đặt chế độ xem bộ điều khiển thành chế độ xem mới.
- Đặt nguồn dữ liệu chế độ xem bảng cho cá thể của bạn (tự).
- Thực hiện hai phương pháp nguồn dữ liệu cần thiết: tableView: cellForRowAtIndexPath và tableView: numberOfRowsInSection
tập tin thực thi của bạn nên được như sau:
#import "MyViewController.h"
@implementation MyViewController
@synthesize tableView=_tableView;
- (void)dealloc
{
[_tableView release];
[super dealloc];
}
#pragma mark - View lifecycle
- (void)loadView
{
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 460.0) style:UITableViewStylePlain];
self.tableView = tableView;
[tableView release];
UIView *view = [[UIView alloc] init];
[view addSubview:self.tableView];
self.view = view;
[view release];
self.tableView.dataSource = self;
}
- (void)viewDidUnload {
self.tableView = nil;
[super viewDidUnload];
}
#pragma mark - Table view data source
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyCellIdentifier = @"MyCellIdentifier";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:MyCellIdentifier];
if(cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyCellIdentifier] autorelease];
}
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 5;
}
@end
Có lẽ nó cũng hữu ích cho tất cả những ai mới trong bạn đó.
- (void)viewDidLoad
{
[super viewDidLoad];
// init table view
tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
//or, you may do that
//tableView = [[UITableView alloc] init];
//tableView.frame = CGRectMake:(5 , 5 , 320 , 300);
// must set delegate & dataSource, otherwise the the table will be empty and not responsive
tableView.delegate = self;
tableView.dataSource = self;
tableView.backgroundColor = [UIColor cyanColor];
// add to canvas
[self.view addSubview:tableView];
}
#pragma mark - UITableViewDataSource
// number of section(s), now I assume there is only 1 section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)theTableView
{
return 1;
}
// number of row in the section, I assume there is only 1 row
- (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
// the cell will be returned to the tableView
- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"HistoryCell";
// Similar to UITableViewCell, but
JSCustomCell *cell = (JSCustomCell *)[theTableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[JSCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
// Just want to test, so I hardcode the data
cell.descriptionLabel.text = @"Testing";
return cell;
}
@end
cho những người mới (tôi), để sao chép/dán vào một ứng dụng chung, thay đổi 'JSCustomCell' thành 'UITableViewCell', thay đổi 'cell.descriptionLabel.text' thành 'cell.textLabel.text'. số đếm ngược của các mục mảng của bạn cho 'numberOfRowsInSection'. nhắc nhở để khai báo các phương thức ủy nhiệm (tôi nghĩ đó là những gì nó được gọi) trong tệp .h, '
- 1. thêm UITableView theo chương trình vào UIViewController
- 2. Cách hiển thị hình ảnh trên UIView theo chương trình?
- 3. RadioGroup: Làm thế nào để kiểm tra theo chương trình
- 4. Làm cách nào để thay đổi hình ảnh được hiển thị trong UIImageView theo chương trình?
- 5. Làm cách nào để hiển thị hoặc ẩn biểu tượng phong bì Outlook theo chương trình?
- 6. Hiển thị các điều khiển theo chương trình trong MPMoviePlayerController
- 7. Hiển thị Xem theo chương trình thành chuỗi
- 8. Làm thế nào để tạo video theo chương trình?
- 9. Làm thế nào để thêm những thứ vào một chương trình menustrip theo chương trình?
- 10. Làm cách nào để đặt tiêu đề theo chương trình
- 11. Ẩn/hiển thị thanh hành động theo ngữ cảnh theo chương trình
- 12. Chèn chỉ thị theo chương trình góc
- 13. Làm cách nào để hiển thị các bong bóng lỗi xác thực phía máy khách HTML5 theo chương trình?
- 14. Làm thế nào để hạn chế số lượng ô UITableview hiển thị?
- 15. Làm thế nào để hiển thị một NSSet trong một UITableView?
- 16. Làm thế nào để mở bàn phím số quay số theo chương trình trong Android?
- 17. Làm thế nào để cập nhật dữ liệu trong UITableView?
- 18. Không thể Nhận Hộp thoại để hiển thị theo chương trình trong JQuery Mobile
- 19. Làm thế nào để theo dõi/hiển thị tiến trình trong khi sắp xếp theo kiểu C++
- 20. Thêm ô theo lập trình vào UITableView
- 21. Làm mờ trong chương trình jquery div hiển thị
- 22. Làm cách nào để chuyển đổi tab theo chương trình?
- 23. Nhận ô hiển thị từ UITableView pagingEnabled
- 24. Điều khiển thời gian chạy hiển thị Android TextView theo chương trình
- 25. Ẩn UITableView khi searchResultsTableXem hiển thị
- 26. GWT: Làm thế nào để tải lại CellBrowser theo chương trình?
- 27. Làm cách nào để gửi UILongPressGesture theo chương trình?
- 28. Làm cách nào để đặt kiểu textView theo chương trình?
- 29. Làm cách nào để đặt docstring theo chương trình?
- 30. Datatables jQuery, thay đổi chương trình số hàng hiển thị
cảm ơn bạn đã trả lời. Nhưng tôi không sử dụng lớp UIViewTable, tôi chỉ sử dụng lớp đơn giản. Bạn có thể cho tôi biết làm thế nào để thêm mảng vào bảng hoặc ô bảng? Cảm ơn bạn. – Questions
@MarkSiu không cần phải triển khai lớp UITableView chỉ cần viết mã để thêm UITableView vào hàm viewdidload của bạn và trên ba hàm hiển thị bảng trong khung nhìn của bạn – priyanka
cảm ơn bạn đã trả lời. Tôi đã thêm các hàm trên vào lớp .m. Tuy nhiên, tôi thấy rằng những chức năng đó không được gọi bởi UITableView. Khi nào các chức năng được gọi? Cảm ơn bạn. – Questions