2013-09-21 30 views
12

Tôi thiếu một số thứ quan trọng. Không chắc chắn chính xác nó là gì.iOS: Chế độ xem tùy chỉnh với xib

Tôi có lớp con chế độ xem tùy chỉnh. Tôi đã tạo một tệp xib để thiết kế bố cục của nó. Tôi kết nối bốn nút làm cửa hàng cho lớp học.

#import <UIKit/UIKit.h> 

@interface MCQView : UIView 
@property (strong, nonatomic) IBOutlet UIButton *btn1; 
@property (strong, nonatomic) IBOutlet UIButton *btn2; 
@property (strong, nonatomic) IBOutlet UIButton *btn3; 
@property (strong, nonatomic) IBOutlet UIButton *btn4; 

sau đó tôi có

#import "MCQView.h" 

@implementation MCQView 
@synthesize btn1,btn2,btn3,btn4; 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil] objectAtIndex:0]]; 
      NSLog(@"%@", btn1); 

    return self; 
} 

sau đó tôi thêm các quan điểm khác điều khiển xem qua: initWithFrame.

Khi tôi cố gắng đăng nhập btn1, để xem liệu nó có tồn tại hay không, nó sẽ in không. Tôi cho rằng nó bởi vì tôi đã không khởi tạo nó, nhưng tôi không chắc chắn làm thế nào để làm điều đó, xem xét rằng nếu tôi tạo ra nó như là một nút mới thì tất cả những thứ trong xib sẽ vô dụng?

Trả lời

13

Edited đáp ứng:

Oh chờ đợi, bạn đang cố gắng để khởi tạo xem trong lớp học của bạn? Đừng làm thế.

Trong bộ dựng giao diện, đặt Lớp MCQview.xib thành MCQView để tự động tạo kết nối. Các, kết nối tất cả các nút của bạn, nếu bạn chưa có.

Sau đó, bạn sẽ có thể chỉnh sửa các thuộc tính tự động như bạn thấy phù hợp.

enter image description here

gốc đáp ứng

tôi đang làm điều này từ bộ nhớ, nhưng tôi nghĩ rằng bạn cần được thực hiện như thế này:

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil]; 

UIView *view = [[UIView alloc] init]; // or if it exists, MCQView *view = [[MCQView alloc] init]; 

view = (UIView *)[nib objectAtIndex:0]; // or if it exists, (MCQView *)[nib objectAtIndex:0]; 

[self.view addSubview:view]; 
+0

Tôi không hiểu lắm. Làm thế nào để nhanh chóng mà xem từ một bộ điều khiển xem? Với xib tùy chỉnh. – JoshDG

+0

Để khởi tạo chế độ xem trong bộ điều khiển chế độ xem khác, hãy sử dụng mã trong tiêu đề ** Phản hồi gốc **. – ArtSabintsev

+0

Ah, nó hoạt động. Tôi làm cách nào để khởi tạo chế độ xem tùy chỉnh? – JoshDG

0

Bạn đúng là bạn không cần phải bắt đầu các nút bằng XIB. Hãy thử sử dụng initWithNibName thay vì loadNibNamed.

+1

UIView không phản hồi với initWithNibName: – ArtSabintsev

+0

Tôi có điều đó cho bộ điều khiển xem – JoshDG

4

này cần được đơn giản:

view = [[[NSBundle mainBundle] loadNibNamed:@"MCQView" owner:self options:nil] objectAtIndex:0]
1

Đối với Swift (2):

var nib = NSBundle.mainBundle().loadNibNamed("MCQView", owner: self, options: nil) 
    view : MCQView = nib[0] as! MCQView 
    self.view.addSubview(view) 
Các vấn đề liên quan