2012-11-20 26 views
5

Tôi có bảng phân cảnh với khoảng cách từ ô bảng. Tôi muốn thiết lập một số thuộc tính với một số dữ liệu khi liên tiếp được chọn vì vậy tôi làm như sau:Phân đoạn bảng phân cảnh được gọi trước khi doSelectRow của UITableView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [[ProperyManager sharedPropertyManager]setSelectedRow:[verseIds objectAtIndex:indexPath.row]]; 
    [[ProperyManager sharedPropertyManager]setID:[poemIDs objectAtIndex:indexPath.row]]; 
    [[ProperyManager sharedPropertyManager]setRowToReturn:[NSString stringWithFormat:@"%i",indexPath.row]]; 


} 

Vấn đề là, các phương pháp vòng đời view controller (viewWillAppear vv) của bộ điều khiển xem nơi được gọi trước Phương thức didSelectRow ở trên, bởi vì segue đẩy khung nhìn trước khi phương thức ủy nhiệm được thực thi.

Làm cách nào để giải quyết vấn đề này?

Trả lời

14

Không tạo Phân đoạn từ ô đến VC mới, thay vào đó đặt Phân đoạn từ VC cũ sang VC mới và đặt mã nhận dạng segue.

Sau đó, trong vòng

didSelectRowAtIndexPath bạn có thể gọi

[self performSegueWithIdentifier:@"Segue" sender:self]

+0

cảm ơn đã làm cho ngày của tôi –

14

câu trả lời Rawkode là một giải pháp tốt - một sự thay thế là, trong prepareForSegue:, bạn có thể truy cập vào hàng đã chọn của xem bảng (các Đối số sender sẽ là ô xem bảng, sau đó bạn có thể thực hiện [self.tableView indexPathForCell:(UITableViewCell*)sender] để nhận đường dẫn chỉ mục) và thiết lập bất cứ điều gì bạn cần tại thời điểm đó.

+0

cảm ơn câu trả lời của bạn đã giúp tôi tìm ra một thứ khác và hiểu thêm :) –

+0

Perfect jrturton. Đây chính xác là những gì tôi đang tìm kiếm ... –

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