2010-08-23 5 views
0

У меня возникла проблема при реализации MVC. Я создал подкласс UIView и разработал свое собственное представление. Я создал подкласс UIViewController и указал его представление на мой пользовательский класс представления. Наконец, я создал подкласс NSObject и создал модель для моего контроллера. Когда я запускаю приложение, я получаю черный экран ... Любая идея по этому поводу?Проблема при реализации MVC

== My Model ==

- (id) init 
{ 
    imgArray = [[NSMutableArray alloc] initWithObjects: [UIImage imageNamed:@"scene.jpg"], 
     [UIImage imageNamed:@"scene1.jpg"], 
     [UIImage imageNamed:@"scene2.jpg"], nil]; 

    return self; 
} 

== Мой контроллер ==

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSNotification 
    CGRect mainFrame = [[UIScreen mainScreen] applicationFrame]; 

    // Get the view 
    MVCView *myView = [[MVCView alloc] initWithFrame:mainFrame]; 

    // Get the data 
    MVCModel *myModel = [[MVCModel alloc] init]; 
    myView.myImgView.image = [myModel.imgArray objectAtIndex:0]; 

    //[self.view addSubview:myView]; 
    [myView setNeedsDisplay]; 
    self.view = myView; 
    self.title = @"MVC"; 
} 

== My View ==

- (id)initWithFrame:(CGRect)frame { 
    if ((self = [super initWithFrame:frame])) { 
     // Initialization code 
     CGRect imgFrame = CGRectMake(5, 20, 150, 150); 
     //myImgView.image = [UIImage imageNamed:@"scene.jpg"]; 
     myImgView.frame = imgFrame; 

     CGRect lblFrame = CGRectMake(5, 150, 50, 50); 
     myLabel.text = @"Nature is beautiful"; 
     myLabel.frame = lblFrame; 

     CGRect sldFrame = CGRectMake(5, 200, 50, 50); 
     mySlider.minimumValue = 0; 
     mySlider.maximumValue = 100; 
     mySlider.frame = sldFrame; 
    } 
    return self; 
} 

// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
- (void)drawRect:(CGRect)rect { 
    // Drawing code 

    CGPoint imgPoint = CGPointMake(10, 20); 
    [self.myImgView drawAtPoint:imgPoint]; 

    CGPoint lblPoint = CGPointMake(10, 160); 
    [self.myLabel drawAtPoint:lblPoint]; 

    CGPoint sldPoint = CGPointMake(10, 210); 
    [self.mySlider drawAtPoint:sldPoint]; 
} 

ответ

0

У меня проблема ... На самом деле я не выделял память своим компонентам подкласса UIView и пытался использовать метод drawAtPoint. Как только я выделил память и добавил ее в качестве подзадачи моего класса представления, я получил правильный экран.

1

Установили ли вы мнение вашего UIViewController как подвид представления Window, который поставляется с вашим AppDelegate в вашем application:didFinishLaunchingWithOptions:?

+0

Hi Rano, Я использую приложение на основе навигации, поэтому я поставил свой пользовательский контроллер представления в стек. Я получаю панель навигации с правильным содержимым, но часть просмотра черная. – Abhinav

+0

@Abhinav: вы пытались выделить свой вид в методе init вашего контроллера, установленного в viewDidLoad? – rano

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