2012-04-17 32 views
5

Tôi có một ứng dụng nhỏ sử dụng nhiều bố cục phần cho chế độ xem bảng ban đầu. Một phần hiển thị các xu hướng gần đây nhất từ ​​Twitter và phần còn lại hiển thị những câu chuyện gần đây nhất từ ​​Twitter. Khi tôi nhấp vào một mục trong danh sách các xu hướng, tôi chuyển sang bộ điều khiển xem bảng mới hiển thị các tweet mới nhất về xu hướng đó. Trong bộ điều khiển gốc cho phần câu chuyện tôi có thể hiển thị thêm thông tin trong một bộ điều khiển chế độ xem khác có chứa hình ảnh, liên kết, v.v. Vấn đề là khi tôi chọn bất cứ điều gì trong phần câu chuyện, tôi đang được đẩy đến bộ điều khiển xem bảng được thiết lập cho phần xu hướng. Tôi đã đặt tên cho mỗi segue và có các lớp học tùy chỉnh cho cả hai quan điểm mà tôi muốn chuyển đổi sang và tôi đang làm điều này để kiểm tra segue đang được gọi là:Nhiều khoảng cách từ bộ điều khiển xem bảng

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if([[segue identifier] isEqualToString:@"viewTrendsSearch"]) { 

     //get the controller that we are going to segue to 
     SearchTrendResultsViewController *strvc = [segue destinationViewController]; 

     //get the path of the row that we want from the table view 
     NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 

     //here we get the trend object from the array we set up earlier to hold all trends 
     Trends *results = [currentTrends objectAtIndex:[path row]]; 

     //pass the object that was selected in the table view to the destination view 
     [strvc setQuery: results]; 
    } 

    if([[segue identifier] isEqualToString:@"storyfullDetails"]) { 

     StoriesViewController *svc = [segue destinationViewController]; 

     NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 

     Stories *results = [currentStories objectAtIndex:[path row]]; 

     [svc setStory:results]; 
    } 
} 

Bất kỳ đề xuất về cách để có được những quan điểm khác nhau ?

Trả lời

16

Không có đủ thông tin trong câu hỏi của bạn để chắc chắn, nhưng điều này nghe có vẻ giống như một vấn đề với những gì tôi gọi là phân biệt tự động so với hướng dẫn sử dụng và các hạn chế đối với mỗi.

An tự động segue được tạo bằng IB bằng cách kéo từ ô bảng (mẫu thử nghiệm) hoặc điều khiển khác. Điều tốt đẹp về nó là nó, tốt, tự động - khai thác điều khiển thực hiện segue, và tất cả những gì bạn cần làm trong mã của bạn là thực hiện prepareForSegue:sender: để bộ điều khiển xem đích nhận được dữ liệu đúng. Nhược điểm là bất kỳ điều khiển đã cho (bao gồm cả các ô bảng mẫu) chỉ có thể có một khoảng cách đi (nếu không, bảng phân cảnh sẽ không biết sẽ tự động thực hiện).

A dẫn sử dụng segue được tạo bằng IB bằng cách kéo từ nguồn bộ điều khiển xem. Điều ngược lại với điều này là một bộ điều khiển xem có thể có nhiều phân đoạn đi. Mặt khác, chúng không liên kết với điều khiển có thể điều khiển được, vì vậy bạn phải thực hiện logic xác định cái nào cần thực hiện khi (và gọi performSegueWithIdentifier: để làm cho nó xảy ra).

Với những cân bằng, có hai giải pháp khả thi cho vấn đề của bạn:

  1. Sử dụng tế bào bảng nhiều mẫu - sau đó mỗi thanh lại có đi segue tự động riêng của mình. Bạn sẽ cần phải thay đổi số tableView:cellForRowAtIndexPath: của bộ điều khiển xem bảng để kiểm tra số phần của đường dẫn chỉ mục và chọn số nhận dạng phù hợp cho dequeueReusableCellWithIdentifier:, nhưng điều này có thể làm cho mọi thứ thuận tiện hơn hoặc hiệu quả hơn nếu xu hướng và ô của bạn có nội dung khác nhau.

  2. Sử dụng phân đoạn thủ công. Sau đó, bộ điều khiển xem bảng của bạn có thể thực hiện tableView:didSelectRowAtIndexPath: để gọi performSegueWithIdentifier: với số nhận dạng thích hợp được chọn dựa trên phần của đường dẫn chỉ mục.

Dù bằng cách nào, việc thực hiện prepareForSegue:sender: của bạn có vẻ ổn.

+0

Ok cảm ơn! Tôi sẽ xem xét thêm hai lựa chọn này và xem liệu tôi có thể tiến lên hay không. Liên quan đến giải pháp 1, làm thế nào bạn sẽ thực hiện nhiều tế bào bảng nguyên mẫu? Trong giao diện bảng phân cảnh, bạn chỉ cần kéo một bộ điều khiển xem bảng khác vào bộ điều khiển gốc? – swallace

+0

Chọn chế độ xem bảng trong IB và trình kiểm tra thuộc tính sẽ có các điều khiển cho số lượng ô mẫu thử. Hoặc kéo một UITableViewCell từ thư viện vào bảng. Dù bằng cách nào, hãy chắc chắn chọn từng ô và cung cấp cho nó một mã định danh duy nhất. – rickster

+0

Giải thích tuyệt vời. Giúp tôi hiểu rõ hơn những gì đang diễn ra – Andrew

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