2009-06-27 22 views
5

Tamam, sanırım önemli bir şeyi kaçırıyorum ve cevabı bulamıyorum. Tüm kodu gönderiyorum çünkü çok küçük.iPhone: Neden drawRect aranmıyor?

Birisi Lütfen bana ne yapıyorum yanlış söyle? Örneðin örneðin örneðin örneðe bakýþtým, uzunca bir süredir çalýþtým, ve çalýþtýklarým yok gibi görünüyor.

Uygulamayı oluşturduğumda, hangi iskeletin bana UIViewController verdiğini kullanırım. Kontrolöre bir bakış açısı koyuyorum. Denetleyiciye bağlantı kurmak için değişkenler yaratıyorum. UIView'imi uçağımda UIView'ime bağlamaya çalıştığımda, derleyici bununla uyumlu değil, aynı zamanda "görüntülemeye" bağlanmak veya uygulama çökmeleri konusunda da ısrar ediyor. Sorun buysa şaşırmam, ama eğer, nasıl düzeltileceğini anlayamıyorum.

DotsieAppDelegate.h:

#import <UIKit/UIKit.h> 

@class DotsieViewController; 

@interface DotsieAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    DotsieViewController *viewController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet DotsieViewController *viewController; 

@end 

DotsieAppDelegate.m

#import "DotsieAppDelegate.h" 
#import "DotsieViewController.h" 

@implementation DotsieAppDelegate 

@synthesize window; 
@synthesize viewController; 


- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after app launch  
    [window addSubview:viewController.view]; 
    [window makeKeyAndVisible]; 
} 


- (void)dealloc { 
    [viewController release]; 
    [window release]; 
    [super dealloc]; 
} 


@end 

DotsieViewController.h

01 İşte

kod
#import <UIKit/UIKit.h> 

@interface DotsieViewController : UIViewController { 

    UIView *dotsieView; 

} 

@property (nonatomic, retain) IBOutlet UIView *dotsieView; 

@end 

DotsieViewController.m

#import "DotsieViewController.h" 

@implementation DotsieViewController 

@synthesize dotsieView; 

-(void)drawRect:(CGRect)rect { 
    NSLog(@"here"); 
    CGRect currentRect = CGRectMake(50,50,20,20); 
    UIColor *currentColor = [UIColor redColor]; 

    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetLineWidth(context, 2.0); 
    CGContextSetStrokeColorWithColor(context, currentColor.CGColor); 

    CGContextSetFillColorWithColor(context, currentColor.CGColor); 
    CGContextAddEllipseInRect(context, currentRect); 
    CGContextDrawPath(context, kCGPathFillStroke); 
    // [self.view setNeedsDisplay]; 
} 



// The designated initializer. Override to perform setup that is required before the view is loaded. 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
     // Custom initialization 
    } 
    [self.view setNeedsDisplay]; 
    return self; 
} 
- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


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

@end 

cevap

14

drawRect çağrılan değil, bu yüzden UIViewController den UIView değil bir yöntemdir. Senin durumunda

, sizin UIViewController alt sınıf içinde özel UIView yaratıp içerisinde drawRect üzerine değil, gerek gibi görünüyor.