2012-08-06 22 views
5

Làm thế nào để loại bỏ các hiệu ứng chuyển từ một segue modal khi hiển thị các phương thức như thế này:Modal Segue không chuyển

[self performSegueWithIdentifier:@"SomeIdentifier" sender:self]; 

Tôi biết tôi có thể đi vào kịch bản và chuyển đổi giữa 4 hình ảnh động khác nhau nhưng tôi không muốn bất kỳ! Làm cách nào để xóa chúng?

Tôi biết tôi có thể nói presentModalViewController animated: NO nhưng tôi không và không thể gọi nó theo cách này. Tôi cần sử dụng phương pháp performSegueWithIdentifier.

Trả lời

9

Bạn cần tạo khoảng cách tùy chỉnh (không có hoạt ảnh) nếu bạn cần một khoảng cách nhưng không muốn hoạt ảnh.

Bạn nên nhìn vào Apples "creating custom segues" example trong hướng dẫn lập trình bộ điều khiển chế độ xem, chúng thực hiện phân đoạn phương thức tùy chỉnh mà không có hoạt ảnh (giống như bạn muốn).

+0

Rất tuyệt vời. – MobileMon

11

Đây là nguồn đầy đủ của một segue không-hoạt hình:

BVNoAnimationSegue.h

#import <UIKit/UIKit.h> 
@interface BVNoAnimationSegue : UIStoryboardSegue 
@end 

BVNoAnimationSegue.m

#import "BVNoAnimationSegue.h" 

@implementation BVNoAnimationSegue 

- (void)perform 
{ 
    [[self sourceViewController] presentModalViewController:[self destinationViewController] animated:NO]; 
} 

@end 

Để sử dụng, thêm các tập tin cho dự án của bạn (ví dụ như BVNoAnimationSegue.m/.h), sau đó trong bảng phân cảnh, hãy chọn 'Tùy chỉnh' làm Phân đoạn của bạn nhập và nhập BVNoAnimationSegue vào hộp Loại Segment. Sau khi bạn đã thực hiện Xcode này có vẻ là đủ thông minh để thêm 'không có hoạt hình segue' như là một tùy chọn khi bạn CTRL-kéo giữa UIViewControllers trong tương lai.

15

Trong bảng phân cảnh, bạn có thể chọn khoảng cách và trong Thanh tra thuộc tính, bỏ chọn "Hoạt ảnh". Nên làm vậy.

+1

Câu trả lời hay nhất! Đây sẽ là câu trả lời chính thức! –

+5

Điều này chỉ hoạt động cho kiểu phương thức, không có tùy chọn "Hoạt hình" để đẩy –

-1

Một trong nhiều cách chúng ta có thể

YourViewController *aYourViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"aYourViewControllerIdentifier"]; 
[self.navigationController pushViewController:aYourViewController animated:NO]; 

và thêm @"aYourViewControllerIdentifier" để xem điều khiển trong kịch bản của bạn.