2012-02-01 23 views
6

HI có một lớp xem tùy chỉnh được tải và được đặt trong chế độ xem chính của tôi bằng cách sử dụng mã sau đây. Lý do nó mà tôi muốn cư nó với nội dung khác nhau hơn là xây dựng một cái nhìn trong mã mỗi lần nếu tôi tạo một lớp tùy chỉnh tôi có thể tái sử dụng điều này trong một vòng lặp vv, tôi có điều này để làm việc tốt trong mã, đó là đặt nhưng không phải là viết tay tất cả những gì tôi nghĩ nếu tôi tạo Chế độ xem giao diện người dùng mới, sau đó xây dựng trực quan các trường văn bản, nhãn và nút của tôi trên chế độ xem này.iOS5 Chỉ định một .xib cho một lớp UIView tùy chỉnh

Sau đó kết nối với lớp tùy chỉnh của tôi.

Bu đây là nơi tôi gặp sự cố, làm cách nào để kết nối tệp xib chế độ xem này để nó hiển thị khi được đặt trên mã của tôi. Tôi đã gán thuộc tính lớp tùy chỉnh trong tệp xib vào tệp tùy chỉnh của tôi, nhưng còn thiếu gì nữa?

.h File:

#import <UIKit/UIKit.h> 

@interface blogView : UIView 

@end 

.m file:

#import "blogView.h" 

@implementation blogView 

- (id)init 
{ 
    self = [super initWithFrame:CGRectMake(0, 0, 478, 220)]; 
    if (self != nil) 
    { 
     NSLog(@"Blog View loaded"); 

     self.backgroundColor = [UIColor yellowColor]; 

     UILabel *titleLbl = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 400, 40)]; 
     [titleLbl setText:@"This is the Title"]; 

     [self addSubview:titleLbl]; 

    } 
    return self; 
} 

@end 

tập tin xib của tôi có cùng tên blogView.xib mà là một Interface Xem tài.

Trong vòng điều khiển giao diện chính của tôi và trong viewDidLoad tôi có

blogView *blogItem = [[blogView alloc]init]; 
    [self.view addSubview:blogItem]; 

Khi tôi chạy đây là tất cả hoạt động tốt, nhưng tôi muốn liên kết đến một tập tin .xib để tiết kiệm thời gian, vv Cảm ơn

Trả lời

14

Vâng có cái nhìn xung quanh và cố gắng bit của manh mối và đề nghị tôi quản lý để thực hiện điều này như sau:

Trong tập tin .m của tôi, tôi đặt/thay đổi như sau:

self = [super init]; 
    if (self != nil) 
     {  
      NSArray *theView = [[NSBundle mainBundle] loadNibNamed:@"blogView" owner:self options:nil]; 
      UIView *nv = [theView objectAtIndex:0]; 

    .. rest of code. 

    [self addSubview:nv]; 

.. rest of code. 

Nhiều Cảm ơn

+0

Hm Tôi không thể làm cho nó hoạt động trong init, thay vào đó nó có vẻ hoạt động nếu bạn đặt nó trong drawRect: - (void) drawRect: (CGRect) rect { NSArray * theView = [[NSBundle mainBundle ] loadNibNamed: @ "RatingPickerView" chủ sở hữu: tùy chọn tự: nil]; UIView * nv = [đối tượngViewAtIndex: 0]; [self addSubview: nv]; } – Dan2552

+0

Nhưng sau đó làm thế nào để bạn thực hiện một bộ điều khiển cho nó, và làm thế nào bạn sẽ tham khảo bộ điều khiển từ bộ điều khiển của khung nhìn có chứa? – Dan2552

+0

?? Ý bạn là gì –

0

bạn có thể muốn tạo một bộ điều khiển cho tầm nhìn của bạn và tải rằng quan điểm sử dụng initWithNibName:bundle:

+0

nhờ gợi ý của bạn cố gắng này cho các lứa tuổi trước khi gửi bài nhưng chỉ không thể có được điều này để làm việc, giữ crashing. –

4

tôi vật lộn với điều này trong một giờ khi tôi ĐỔI TÊN lớp viewController tôi. Đây là những gì làm việc cho tôi trong Xcode 5

  1. Đến tập XIB bạn
  2. Bấm vào hộp chủ sở hữu tập tin trong suốt ở bên trái
  3. Mở tab kiểm tra của bạn (nút thứ ba trên ngay trong Xem Mục - giữa Trình chỉnh sửa và Trình tổ chức)
  4. Chuyển đến Trình kiểm tra danh tính của bạn (thứ 3 từ bên trái) bên dưới tab chế độ xem trình tổ chức trình chỉnh sửa.
  5. Khắc phục lớp tùy chỉnh - Tùy chọn lớp cho bất kỳ lớp nào bạn muốn phản hồi.

Cho phép chỉ nói rằng tôi đã vô cùng tức giận sau khi lãng phí thời gian với điều đó

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