ProgramingTip

보기 컨트롤러의보기에 사용자 지정 하위보기 (xib에서 생성됨) 추가-내가 뭘 잘못하고 있니?

bestdevel 2020. 11. 30. 19:23
반응형

보기 컨트롤러의보기에 사용자 지정 하위보기 (xib에서 생성됨) 추가-내가 뭘 잘못하고 있니?


xib에서보기 (활동 표시기, 진행률보기 및 레이블 포함)를 만들었습니다. 그런 다음 .h / .m 파일을 만들었습니다.

#import <UIKit/UIKit.h>

@interface MyCustomView : UIView {
    IBOutlet UIActivityIndicatorView *actIndicator;
    IBOutlet UIProgressView *progressBar;
    IBOutlet UILabel *statusMsg;
}

@end

#import "MyCustomView.h"

@implementation MyCustomView    

- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {
        // Initialization code
    }
    return self;
}

- (void)dealloc {
    [super dealloc];
}

@end

IB에서 파일 소유자를 설정하고 ID를 MyCustomView로보고 IBOutlet을 파일 소유자에 연결합니다.

MyViewController.m에서 다음을 수행했습니다.

- (void)viewDidLoad {

    [super viewDidLoad];   

    UIView *subView = [[MyCustomView alloc] initWithFrame:myTableView.frame];
    [subView setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5]];

    [myTableView addSubview:subView];
    [subView release];
}

앱을 실행하면보기가 추가 언어 레이블, 진행률 표시 줄 및 활동 내용이 보이네요.

내가 도대체 ​​뭘 잘못하고있는 겁니까?


-loadNibNamed메소드를 사용하여로드해야합니다 . -initWithNibNameUIViewControllers 전용입니다.

MyCustomView init 메서드에 다음 코드를 추가합니다.

NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil];
UIView *mainView = [subviewArray objectAtIndex:0];
[self addSubview:mainView];

펜촉에서 객체를 초기화하는 경우 초기화를 호출 - (id)initWithCoder:(NSCoder *)aDecoder하므로 펜촉 내에 MyCustomView 객체를 생성하는 경우이를 재정의해야합니다. 을 사용하여 수행하는 경우이를 initWithFrame:재정의하고 위의 코드를 추가하십시오. 또한 펜촉에 최상위 UIView가 하나 있는지 확인하고 그 안에 다른 모든 요소를 ​​배치하십시오 (subviewArray에 항목이 하나만 있는지 확인).

이것은 펜촉에서 뷰를로드하여 객체에 추가하고 트릭을 수행해야합니다.


이 방법을 사용해야한다고 생각합니다.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

이는 "nibNameOrNil"에 .xib 파일 이름을 전달해야하기 때문입니다.


hocker가 말했듯이 XIB 이름 (확장자없이)을 전달하는 방법을 사용해야합니다.

그런 다음이 목록을 제어해야합니다.

  • IB에서 .xib 파일 열기
  • 파일 소유자를 클릭하고 올바른 클래스 (귀하의 경우 MyCustomView)를 선택하십시오.
  • 컨트롤을 누른 상태에서 파일 소유자에서보기로 드래그합니다 (이제보기에 대한 콘센트는 괜찮습니다).

작동하기를 바랍니다. 건배.

참고 URL : https://stackoverflow.com/questions/5354653/adding-a-custom-subview-created-in-a-xib-to-a-view-controllers-view-what-am

반응형