2013-07-17 24 views
5

Bên trong phương thức hoạt động thư giãn của tôi cho khoảng cách thư giãn của tôi, tôi gửi dữ liệu đến cơ sở dữ liệu từ xa và xác minh xem thông tin đã được lưu trữ thành công trong cơ sở dữ liệu chưa.iOS - Có thể tách biệt thư giãn bằng cách sử dụng mã bên trong phương pháp hành động thư giãn của nó không?

Tôi dự định có chức năng xác minh của mình trả về 0 hoặc 1, để thành công hay thất bại và tôi đang lập kế hoạch sử dụng điều đó làm điều kiện.

Tôi tò mò nếu có cách nào để hủy bỏ khoảng cách thư giãn bên trong phương pháp hành động thư giãn? (Hoặc tôi chỉ nên làm điều này xác minh trước khi segue thư giãn bắt đầu và ngăn chặn sự tách biệt thư giãn ngay cả khi bắt đầu bằng cách nào đó?)

Tôi đã đọc ios segue "cancel" nhưng tôi không biết ý của họ là gì khi họ nói để ghi đè lên

-[UIViewController shouldPerformSegueWithIdentifier:sender:] 

. Tôi chỉ cần thực hiện phiên bản tùy chỉnh của riêng tôi của phương pháp này (xem bên dưới) và gọi nó bên trong phương pháp hành động thư giãn, và làm cho nó trở lại không/có tùy thuộc vào tình trạng của tôi? Tôi đã cố gắng ghi đè phương pháp với:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
    if (database verification fails) { 
     return NO; 
    } 
    return YES;    
} 

và tôi gọi nó bên trong phương thức hành động thư giãn của mình, tuy nhiên nó không hủy bỏ khoảng cách thư giãn.

Tôi có làm điều gì đó không chính xác hoặc có cách nào khác để hủy bỏ khoảng cách thư giãn bên trong phương pháp hành động thư giãn không?

Tôi mới sử dụng iOS, vì vậy tôi xin lỗi nếu câu hỏi này có vẻ ngớ ngẩn. Cảm ơn vì bất kì sự giúp đỡ!

+2

Triển khai ifPerformSegueWithIdentifier của bạn trông ok, nhưng nó thuộc về bộ điều khiển bạn đang phân tách, chứ không phải trong phương thức hành động. – rdelmar

+0

Cảm ơn @rdelmar đã làm việc! – giant91

Trả lời

2

Có lẽ sẽ tốt nhất nếu bạn chỉ kiểm tra kết quả của cơ sở dữ liệu và sau đó thực hiện phân đoạn. Đoạn mã đầu tiên mà bạn đăng sẽ không bị sửa đổi nhiều, nhưng nếu bạn đã tạo ra và làm việc, thì điều duy nhất bạn sẽ thêm vào mã của mình để kiểm tra, sẽ giống như thế này cơ sở dữ liệu trả về YES và bạn thực hiện nó một NSString gọi returnResult):

if ([returnResult isEqualToString:@"YES"]) 
{ 
    [self performSegueWithIdentifier:@"unwindSegueName" sender:self]; 

} 
else 
{ 
    //do whatever here if the value equals anything other than "YES" 
} 

của bạn nếu tuyên bố sẽ thay đổi tùy thuộc vào dữ liệu mà bạn có được trở lại từ cơ sở dữ liệu, nhưng bạn sẽ vẫn chỉ sử dụng một đồng bằng if có điều kiện.

FYI, Đăng thêm mã sẽ giúp bạn nhận được câu trả lời hoàn chỉnh hơn. Nếu bạn đăng tải dữ liệu trả về từ cơ sở dữ liệu, thì tôi có thể chỉ cho bạn cách sử dụng nó.

+0

thư trả lời này không phải là mục đích ban đầu. Nhận xét của bài đăng gốc từ rdelmar là chính xác –