2016-05-03 2 views
1

Проблема: View загружен, но внутренние элементы не загружены или не появились почему?SubViews MainView в Xib не отображаются в iOS, почему?

XIB изображение:enter image description here

и соответствующий .h является:

#import <UIKit/UIKit.h> 
@interface DownloadView : UIView 

@property (strong, nonatomic) IBOutlet UIView *view; 
@property (weak, nonatomic) IBOutlet UILabel *downloadFilename; 
@property (weak, nonatomic) IBOutlet UILabel *downloadpercentage; 
@property (weak, nonatomic) IBOutlet UIProgressView *downloadprogressBar; 
@property (weak, nonatomic) IBOutlet UIButton *downloadCancel; 

@end 

.m файл:

#import "DownloadView.h" 

@implementation DownloadView 

-(id)initWithFrame:(CGRect)frame{ 
    self = [super initWithFrame:frame]; 
    if(self){ 
     [[NSBundle mainBundle] loadNibNamed:@"DownloadView" owner:self options:nil]; 
     [self addSubview:self.view]; 
    } 

    return self; 
} 

-(id) initWithCoder:(NSCoder *)aDecoder{ 
    self = [super initWithCoder:aDecoder]; 
    if(self){ 
     [[NSBundle mainBundle] loadNibNamed:@"DownloadView" owner:self options:nil]; 
     [self addSubview:self.view]; 
    } 
    return self; 
} 

вызывающий файл:

polygonView = [[DownloadView alloc]initWithFrame:CGRectMake(0, height-170, width, 100)]; 


     polygonView.downloadFilename.text = @"Initiating Download..."; 
     [polygonView.downloadprogressBar setProgress:0]; 
     polygonView.downloadpercentage.text = @"0%"; 

     [window addSubview:polygonView]; 

В чем проблема?

Debugger обновление: enter image description here

Выход: enter image description here

+0

Что произошло после того, как вы добавили subview в окно? Что вы делаете правильно. Нет ничего плохого. Может быть, проблема в свойствах окна! –

+0

@TejaNandamuri Его показ подвид, но не показывающий элементы внутри этого подвид. – Group

+0

может быть неправильный кадр, попробуйте добавить эту строку после загрузки xib. self.view.frame = self.bounds i.e сразу после строки loadNibNamed. –

ответ

1

К сожалению, вы не можете создавать пользовательские UIView, как это, он не будет работать. Я использую другой способ для многоразовых пользовательских компонентов:

  1. Создайте новый контроллер просмотра в раскадровке, смените ее рамку и настройте ее.
  2. Дайте ему идентификатор
  3. Во всех местах, которые вы хотите использовать в раскадровке, просто создайте представление контейнера и вставьте свой настраиваемый контроллер представлений.
  4. Если вы хотите использовать его программно. Просто создайте экземпляр из раскадровки с идентификатором. Измените размер рамки и добавьте его в качестве подзапроса.
+0

Извините Hossam Я думаю, что вы не знаете о пользовательских xibs – Group

+0

Я знаю, и я их ненавижу на самом деле, слишком много проблем происходит при их использовании, тогда я решил использовать метод, о котором я вам рассказывал. Если это неясно, дайте мне знать, чтобы дать вам простой пример. –

+0

Спасибо Хоссам, меня это не интересует; – Group

Смежные вопросы