Tôi dường như không nhận được SIGABRT này mà tôi tiếp tục nhận được. Tôi có ứng dụng bảng phân cảnh iOS này và trong bảng phân cảnh tôi có UITableViewController. Bây giờ, tôi có thể lấy một tế bào của TVC và làm cho nó đẩy bộ điều khiển xem "segue", nhưng nếu tôi cần phải ngừng hành động "segue" trên một số điều kiện nhất định? Rõ ràng là bạn không thể, vì phương thức preparForSegue: sender: không cho phép nó, và nó có vẻ là callback duy nhất được gọi khi một quá trình chuyển đổi sắp được thực hiện.performSegueWithIdentifier vs instantiateViewControllerWithIdentifier
Vì vậy, tôi đoán tôi có thể đi vào bảngView: didSelectRowAtIndexPath: và thực hiện segue theo chương trình. Tối ưu, nhưng vẫn…
Vâng, hóa ra tôi đã đoán sai. Hoặc ít nhất, tôi đang làm điều gì sai. Cách rõ ràng nhất để làm điều đó sẽ là
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"TheOtherIdentifier" sender:self];
}
nhưng tai nạn toàn bộ ứng dụng với một SIGABRT, mà không đưa ra bất cứ thông tin hữu ích (và vâng, tôi chắc chắn rằng nó là dòng mà làm cho sự sụp đổ của ứng dụng, tôi kiểm tra với trình gỡ lỗi :) Hơn nữa, VC tôi đang cố gắng tải có số nhận dạng được đặt chính xác, vì mã sau đây
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"TheOtherIdentifier"];
[self.navigationController pushViewController:vc animated:YES];
}
"works". Dấu ngoặc kép chỉ ra rằng đây rõ ràng không phải là cách chuyển đổi như vậy nên được thực hiện.
Bây giờ: ý tưởng?
Chỉ cần rõ ràng, bạn đã nói bạn đã đặt số nhận dạng này cho bộ điều khiển chế độ xem đích. Nhưng bạn đã thiết lập một định danh cho chính segue? Đó là số nhận dạng bạn cần sử dụng trong trường hợp đầu tiên. –
Ok, tôi đã bỏ lỡ điều đó. Tham khảo câu trả lời của T.J. để có thêm ý kiến. – Morpheu5