2012-02-22 26 views
12

Tôi đã thiết lập UITableView bằng NSFetchedResultsController hiển thị một số mẫu UITableViewCells. Tôi đã nối một segue đẩy từ UITableViewCell của tôi để DetailViewController của tôi.prepareForSegue không được gọi khi hàng UITableView được chọn?

Trong TableViewController của tôi, tôi đã thực hiện cả hai:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"%s", __PRETTY_FUNCTION__); 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSLog(@"%s", __PRETTY_FUNCTION__); 
} 

Khi tôi chạy các ứng dụng và bấm vào một hàng trong tableView ứng dụng của tôi chỉ gọi:

[TableViewController tableView:didSelectRowAtIndexPath:] 
[TableViewController tableView:didSelectRowAtIndexPath:] 
[TableViewController tableView:didSelectRowAtIndexPath:] 

Nếu tôi xóa segue và rewire nó tạo thành một UIBarButtonItem để DetailViewController sau đó segue được gọi là chính xác, bất cứ ai có thể nghĩ rằng những gì tôi đang thiếu?

EDIT:

Added:

- (IBAction)tester:(id)sender { 
    [self performSegueWithIdentifier:@"SEGTEST" sender:nil]; 
} 

và kết nối nó unto một UIButtonBarItem mà gọi là "thử nghiệm" và nó hoạt động, tôi chỉ không thể làm cho nó bắn vẫn khi tôi liên kết từ UITableViewCell cho bộ điều khiển.

+0

Giống như câu trả lời của tôi bên dưới. Tại sao không chỉ liên kết nó từ ViewController với ViewController và gọi nó trong phương thức didSelectCell? – Darren

+0

Tôi có thể đoán, tôi tò mò hơn là tại sao nó không bắn. Sự khác biệt duy nhất tôi có thể thấy giữa phiên bản này và phiên bản làm việc mà tôi có là phiên bản này sử dụng Dữ liệu cốt lõi và một UIFetchedResultsController, mặc dù tôi không thể thấy nó quan trọng như thế nào. – fuzzygoat

Trả lời

31

Sau một chút đào, cuối cùng tôi đã tìm thấy số nhận dạng UITableViewCell được đặt không chính xác thành "CELL_ID" khi cần phải là "PLANTCELL_ID".

Som cho bất kỳ ai khác thấy rằng lựa chọn một UITableViewCell trong một UITableView không gọi segue liên quan, kiểm tra nếu nhận dạng di động của bạn được thiết lập một cách chính xác trong cả hai kịch bản và tableView:cellForRowAtIndexPath:.

6

Tự lấy lại khoảng cách của mình từ số ViewController và đặt tên cho nó. Sau đó, trong cuộc gọi didSelectRow phương pháp

[self performSegueWithIdentifier:@"yourSegueName"];  

và xem nếu nó cháy.

+0

Nó thực sự cháy, nhưng làm thế nào để chúng tôi chuyển dữ liệu đến cảnh/khung nhìn được khởi tạo. –

+0

Bạn sử dụng phương thức prepareForSegue. – Darren

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