2010-09-08 33 views
6

Tôi đang cố gắng tạo một UITableView chỉ hiển thị số hàng có nội dung dữ liệu trong đó. Đây là một hệ thống menu, và giả sử có 5 lựa chọn trong menu cụ thể, tôi chỉ muốn hiển thị 5 hàng trên màn hình, với hình nền thay cho vị trí các hàng trống (ví dụ tương tự tôi đoán là Đồng hồ thế giới). Làm thế nào tôi nên đi về điều này? Tôi đã rình mò xung quanh nhưng không thể tìm thấy bất cứ điều gì giúp. Cảm ơn nhiều.UITableView (Bộ điều khiển) - Ẩn các hàng trống

--------------------- 
Menu Item 1 
--------------------- 
Menu Item 2 
--------------------- 
Rest of view as image 




--------------------- 

Sử dụng chế độ xem bảng được nhóm, nhưng tôi thực sự không muốn sử dụng tính năng này.

Trả lời

4

UITableView của bạn có thể có backgroundView. Đặt nó thành UIImageView và đặt khung của nó thành giới hạn của chế độ xem bảng. Mã này chưa được kiểm tra, nhưng nên cung cấp cho bạn một ý tưởng.

UIImage * img = [UIImage imageNamed:@"myImage.jpg"]; 
UIImageView * imgView = [[UIImageView alloc] initWithImage:img]; 
imgView.frame = myTableView.bounds; 
myTableView.backgroundView = imgView; 

EDIT: trên sẽ tạo ra một nền tảng giống như đồng hồ thế giới. để làm cho nó hiển thị bên dưới các ô khác dưới dạng ô, hãy thay đổi nguồn dữ liệu của bạn:

- numberOfRowsInSection:section: phải trả lại nhiều hơn trước. - tableView:canEditRowAtIndexPath:tableView:canMoveRowAtIndexPath: phải trả lại NO cho ô mới này. - (UITableViewCell *)tableView:cellForRowAtIndexPath: cần để tạo ra các tế bào mới khi nó được yêu cầu, vì vậy nếu bạn có 5 ô dữ liệu, thứ 6 sẽ trở lại:

UITableViewCell * cell = //create your cell 
//change the height to match the remaining space 
UIImage * img = [UIImage imageNamed:@"myImage.jpg"]; 
UIImageView * imgView = [[UIImageView alloc] initWithImage:img]; 
cell.backgroundView = imgView; 

Tôi không chắc chắn nếu bạn phải thiết lập kích thước điểm ảnh, nhưng bạn phải thiết lập kích thước tế bào để đưa lên không gian còn lại, với một cái gì đó như thế này trong bạn bảng điểm đại biểu củatableView:heightForRowAtIndexPath: cho hàng cuối cùng:

//if final row 
return myTableView.bounds.size.height - 16.0 * myData.count; //modify from the default 16.0 as needed. 
+0

nhìn vào mã mà, có vẻ như rằng sẽ thêm một hình ảnh phía sau các ô xem bảng. Những gì tôi đang cố gắng đạt được là một cái gì đó như tôi đã cập nhật câu hỏi của tôi để hiển thị. Đúng nếu tôi đã sai lầm. –

+0

Được rồi. Đề nghị của tôi là để làm cho nó giống như đồng hồ thế giới, trong đó sử dụng một hình nền, và điều này sẽ làm như vậy. Nếu bạn muốn hình ảnh hiển thị bên dưới các ô còn lại, bạn cần phải biến nó thành một ô! Tôi sẽ chỉnh sửa bình luận của mình. –

Các vấn đề liên quan