2011-10-19 34 views
8

Tôi muốn thiết lập Chế độ xem bảng đệ quy trong Bảng phân cảnh. Bằng đệ quy, tôi có nghĩa là bạn bấm vào một mục trong TableView và nó tải một thể hiện mới của dạng xem bảng, chỉ với dữ liệu mới được hiển thị. Bằng cách này, tôi có thể tái sử dụng các ô và khung nhìn Table Table chứa trong Table View Controller. Dữ liệu của tôi nằm trong mảng mảng của mảng ...Số lần xem bảng đệ quy trong bảng phân cảnh iOS 4.2

Công việc duy nhất xung quanh tôi có thể tìm là đặt bộ điều hướng điều hướng ua có Bảng điều khiển xem của tôi làm bộ điều khiển chế độ xem gốc và sau đó có đẩy một thể hiện khác của bảng của tôi Xem bộ điều khiển. Bộ điều khiển xem bảng thứ hai sau đó đẩy Bộ điều khiển xem bảng ban đầu và tôi có bộ điều khiển xem bảng đệ quy của mình. Tôi chỉ cố gắng để loại bỏ sự trùng lặp của Bảng điều khiển xem (mặc dù nó chỉ là một lần).

Cảm ơn

ảnh Để tham khảo của những gì tôi đã enter image description here

Trả lời

1

Tôi không thấy bất kỳ lý do tại sao bạn không thể thiết kế kịch bản của bạn để sử dụng các lớp con UITableViewController cùng, sẽ được sử dụng một cách đệ quy . Chỉ cần thiết kế bảng phân cảnh như vậy, sau đó sử dụng phương thức prepareForSegue: để chuyển vùng chọn sang thể hiện kế tiếp của bộ điều khiển.

Bạn đã thử điều này mà không thành công? Bạn gặp phải vấn đề gì?

+0

Vấn đề là tôi không thể tìm ra cách kết nối ViewController với chính nó trong bảng phân cảnh, vì vậy tôi buộc phải tạo một ViewController thứ hai, trùng lặp. Cái đầu tiên tách ra lần thứ hai, và phân đoạn thứ hai đến cái đầu tiên, khiến tôi trở thành đệ quy của tôi. Tôi muốn tránh rằng thứ hai, sao chép bản sao (chỉ cần làm cho nhiều mã trong Storyboard để theo dõi).Tôi sẽ đặt một ảnh chụp màn hình để hiển thị những gì tôi có. Cảm ơn! –

+0

Bạn sẽ không tự kết nối bộ điều khiển xem. Bạn sẽ tạo hai bộ điều khiển xem sử dụng cùng một lớp con (bộ điều khiển xem của bạn). Vì vậy, trong thanh tra danh tính, bạn sẽ thay đổi Class thành 'YourViewController' tên cho tất cả các bộ điều khiển xem bạn muốn recurse. – Simon

+0

Đó là những gì tôi đã làm. Nhưng bây giờ tôi phải giữ hai trường hợp của bộ điều khiển xem đồng bộ (nếu tôi thêm một IBOutlet, tôi phải chắc chắn để làm điều đó cho cả hai). Không phải là kết thúc của thế giới, chỉ là một nơi có thể cho lỗi sau này. –

4

Tôi cũng đang cố gắng làm một việc như thế này. Tôi đã ghép nguyên mẫu Cell lên đến khoảng cách bằng cách phóng to đến mức cao hơn như bạn có trong ảnh chụp màn hình, sau đó nhấp chuột phải vào ô và kéo xuống trong TableView. Điều đó đã cho tôi những lựa chọn phân biệt thông thường.

+1

Đây là cách thực hiện. Điều quan trọng là thu nhỏ một bước. –

+0

Đây không phải là cách nó được thực hiện bởi vì câu hỏi là làm thế nào để kết nối một UITableViewController cho chính nó và không phải là một UITableViewCell để một UITableViewController ... –

+0

Không có tùy chọn segue cho UITableViewController đến bất cứ nơi nào khác, ít nhất là không theo cách anh ta muốn. Segue bắt đầu tại một UITableViewCell và dẫn đến một số lớp con UIViewController khác ... Điều này có ý nghĩa bởi vì nó là một ô tương tác với di chuyển đến khung nhìn tiếp theo, không phải chính TableView. Trong trường hợp này, bạn muốn kết nối nó với một thể hiện khác của UITableViewController chứa (có thể với các tham số khác nhau, như đi sâu hơn trong một cấu trúc cây). – jerslan

4

Nếu bạn mở rộng tầm nhìn Document Outline ở phía bên trái của trình biên tập Storyboard, bạn có thể kiểm soát-kéo từ ô trong bảng để điều khiển xem cùng một ô trong bảng là trong.

+0

Có, bạn có thể làm điều đó, nhưng điều duy nhất nó có thể làm là xác định các tế bào như là đại biểu ... Vì vậy, không sử dụng nhiều nếu bạn muốn có một cái nhìn recurisve trong storyboard của bạn. –

0

tôi đã có một tình huống tương tự ở đâu Tôi đã hỏi người dùng một loạt các câu hỏi cái khác. Những gì tôi đã làm là đặt một nút 'Tiếp theo' với hành động của riêng mình trong VC, sau đó trong phương thức hành động đó, tạo ra cùng một VC cho câu hỏi tiếp theo với chi tiết câu hỏi tiếp theo. Tất nhiên câu hỏi đầu tiên là bản thân VC, sau đó mỗi câu hỏi liên tiếp là một phiên bản khác của VC.

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard_iPhone" bundle:nil]; 
QuestionTableViewController *nextVC = [storyboard instantiateViewControllerWithIdentifier:@"QuestionTableViewController"]; 

[self.navigationController pushViewController:nextVC animated:NO]; 

Lưu ý NO cho hoạt ảnh. Dường như thư giãn sẽ cho bạn các vấn đề nếu bạn nói CÓ. Chưa tìm ra được điều đó.

Tôi phải làm điều này vì vào cuối câu hỏi tôi muốn làm một số relaxSegue và tôi không muốn sử dụng nhiều hơn 1 nút trên màn hình để quay lại ở cuối.

2

Để làm điều này, bạn cần phải quên đi khoảng cách trên bảng phân cảnh chỉ vào chính nó. Chỉ cần sử dụng phương thức ủy quyền didSelectRowAtIndexPath, thao tác dữ liệu của bạn trong đó, tạo ra bộ điều khiển khung nhìn của bạn và đẩy vào ngăn xếp xem bảng. Bắt đầu với bạn trong chế độ xem tiếp theo với PrepareForSegue.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //initiate you new array 
    self.arrayForNewView = someArray; 
    //Now it's important that you give your table view controller in the identity inspector a Storyboard ID. In this case "MyGenericTableViewController" 
    UIViewController *myController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyGenericTableViewController"]; 
    [self.navigationController pushViewController: myController animated:YES]; 

} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    //set data source next generic table view controller 
    MyGenericTableViewController *vc = [segue destinationViewController]; 
    vc.dataSource = self.arrayForNewView; 
} 
Các vấn đề liên quan