2012-03-23 35 views
6

Tôi đang làm việc với số này tutorial, cho biết cách tạo ứng dụng với bảng phân cảnh. ViewController của tôi có hai UIButtons và tôi đã kết nối một segue với những UIButtons đó. Những phân đoạn này đẩy một viewController mới.Làm cách nào để tôi hủy một khoảng cách được kết nối với UIButton

Bây giờ tôi đang tìm cách hủy bỏ khoảng cách này nếu một điều kiện nhất định trở thành sự thật. Khi tôi sử dụng các tệp xib cũ để tạo giao diện của mình, tôi có thể thực hiện một việc như sau:

-(IBAction)sendButton:(id)sender { 
    if(TRUE) { 
    // STOP !! 
    } 
} 

Điều này không còn hoạt động nữa. Làm thế nào tôi có thể hủy bỏ push của viewController mới?

+0

Câu hỏi của bạn không rõ ràng. Các yếu tố của bạn được kết nối như thế nào? Mã làm cho điều hướng "chuyển sang chế độ xem mới" ở đâu? – Stavash

+0

Người dùng có thể hủy phản hồi nhấp chuột theo cách thủ công bằng cách kéo ngón tay của họ ra khỏi nút trước khi phát hành ... Đây có phải là ý của bạn không? Tôi đồng ý với nhận xét ở trên, câu hỏi này không rõ ràng. –

+0

Bạn phải đọc hướng dẫn, ẩn đằng sau liên kết, để hiểu câu hỏi. Đó là về một phân đoạn cốt truyện được liên kết với UIButton –

Trả lời

27

Không. Bạn không thể hủy các phân đoạn được liên kết trực tiếp với các phần tử giao diện như UIButton của bạn.

Nhưng có một giải pháp thay thế.

  1. Tháo segue mà được liên kết với nút
  2. Thêm một segue từ viewController (một với nút) cho viewController cần được đẩy. Đây phải là một phân đoạn không được kết nối với phần tử giao diện. Để làm điều này, bạn có thể bắt đầu segue từ thanh trạng thái. Hoặc tạo segue trong thanh bên trái.
  3. Chọn phân đoạn này, mở trình kiểm tra thuộc tính và thay đổi Mã định danh của segue (ví dụ: PushRedViewController)
  4. Chọn chế độ xem trợ lý Xcodes, vì vậy bạn có thể xem tệp .h của chế độ xemController bằng nút.
  5. Kết nối nút với một hành động. Để thực hiện việc này, hãy chọn nút và kéo điều khiển đến tệp .h. Chọn hành động trong menu và đặt tên cho hành động của bạn (ví dụ redButtonPressed :)
  6. Mở thi hành viewController bạn
  7. thay đổi hành động từ bước 5 đến một cái gì đó như thế này:

    - (IBAction)redButtonPressed:(id)sender { 
        [self performSegueWithIdentifier:@"PushRedViewController" sender:sender]; 
    } 
    
+0

Cảm ơn !! Nó đã làm việc. – Qooe

+2

Bây giờ có thể cho ios5: http: // stackoverflow.com/questions/8066525/prevent-segue-in-preparforsegue-method –

+0

@Matthias Bauch, Cảm ơn! – shuiyouren

9

Bạn có thể thực sự làm điều này bằng cách thêm phương pháp sau đây vào mã của bạn

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 

if([identifier isEqualToString:@"btnSegue"]) 
{ 

    return YES; 
} 
else{ 
    return NO; 
} 

} 

Cho phép giả định segue của bạn là btnSegue.And nếu bạn ne ed các segue được thực hiện dựa trên một số điều kiện bạn có thể có mã sau đây

if(check) 
{ 
[self performSegueWithIdentifier:@"btnSegue" sender:self]; 
} 

đâu séc là BOOL mà bạn có thể thiết lập đúng hay sai dựa trên tình trạng của bạn.

+0

Tại sao đây không phải là câu trả lời được chấp nhận? – TahoeWolverine

+0

@TahoeWolverine Cảm ơn có thể tôi đã trả lời câu hỏi chút muộn :) –

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