2011-12-28 39 views
6

Tôi đang phát triển một ứng dụng iOS 4 và tôi đã phát triển một số lớp học mà tôi muốn sử dụng trong các dự án khác.Thừa kế lớp UIViewController và XIB

Một trong các lớp học này, được gọi là MapViewController, là lớp con UIViewController. Lớp này sử dụng tệp XIB mà tôi đã tạo bằng trình tạo giao diện.

Tôi tự hỏi nếu sử dụng MapViewController trong một dự án khác với tư cách là một lớp siêu hạng từ một lớp học mới, Tôi có thể sử dụng nó liên quan đến XIB như thế nào?

Tôi muốn sử dụng lại MapViewController và XIB của nó, nhưng tôi không biết mình có phải làm gì đó đặc biệt với tệp XIB hay không.

Tôi không biết cách giải thích điều này. Nếu bạn cần thêm chi tiết, hãy cho tôi biết.

UPDATE:

Tôi muốn tạo ra một lớp mới kế thừa từ MapViewController, như thế này:

... 
@interface NewMapViewController : MapViewController { 

... 

Và, bây giờ nếu tôi muốn tiếp tục sử dụng XIB cùng (một từ MapViewController), tôi phải làm gì?

+0

Hãy để tôi cố gắng tìm hiểu, bạn muốn trở thành có thể sử dụng MapViewController của bạn và XIB của mình, nhưng nếu bạn cần một số hành vi đặc biệt bạn không muốn sử dụng XIB? – Peres

+0

Không rõ vấn đề chính xác là gì. – Max

+1

Xin lỗi. Tôi vừa cập nhật câu hỏi của mình với nhiều chi tiết hơn. – VansFannel

Trả lời

6

Vì bạn sẽ kế thừa từ MapViewController, MapViewController của bạn sẽ trở thành siêu hạng. Và bạn cũng có MapViewController.xib. Nó có vẻ khá đơn giản đối với tôi nếu bạn sử dụng initializer cho NewMapViewController

NewMapViewController.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    NSLog(@"Subclass initWithNibName called"); 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

Khởi NewMapViewContoller của bạn như:

//Nib of super class is MapViewController 
NewMapViewController *nmapController = [[NewMapViewController alloc] initWithNibName:@"MapViewController" bundle:[NSBundle mainBundle]]; 
+0

Không, không. Tôi đã thử. Trong thực tế, initWithNibName không bao giờ được gọi. –

+0

@JimThio Tôi đã chỉnh sửa câu trả lời của mình. Tôi đã thử nghiệm cái này và nó hoạt động cho tôi. Hãy thử nó và cho tôi biết. – MadhavanRP

+0

Làm việc cho tôi trong iOS 9.2, cảm ơn! – webo80

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