2009-06-27 9 views
5

Ok, immagino che mi manchi qualcosa di importante, e non riesco a trovare la risposta. Sto postando tutto il codice, perché è molto piccolo.iPhone: perché non viene richiamato drawRect?

Qualcuno può per favore dimmi cosa sto facendo male? Ho lavorato su questo esempio dopo esempio, per un po 'di tempo, e niente di ciò che faccio sembra funzionare.

Quando creo l'app, utilizzo qualsiasi scheletro che mi dia un UIViewController. Ho messo una vista sul controller. Creo le variabili da collegare al controller. Quando provo a connettere l'UIView nel mio pennino al mio UIView, il compilatore sta bene con esso, ma insiste anche sul fatto di essere connesso a "view", oppure l'app si blocca. Non sarei sorpreso se questo è il problema, ma se lo è, non riesco a capire come risolverlo.

Ecco il codice:

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

#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 

risposta

14

drawRect è un metodo da UIView e non da UIViewController, è per questo che non è stato chiamato.

Nel tuo caso, sembra che sia necessario creare il tuo UIView personalizzato e sovrascrivere drawRect in esso e non nella sottoclasse UIViewController.

Problemi correlati