2010-11-17 6 views
1

Tout d'abord j'ai commencé avec le code ci-dessous dans mon contrôleur de vue, mais pour des raisons qui fonctionnent pour moi j'ai besoin du code ci-dessous pour être dans une classe séparée. J'ai donc créé un cours CustomView que j'ai posté ci-dessous.Comment mettre en place une sous-classe de UIScrollView, et connectez-le dans Interface Builder

À ce stade, est-il possible pour moi de créer une instance de cette classe dans mon contrôleur de vue, créer un IBOutlet et le connecter à un UIScrollView (ou une sorte de vue) dans le constructeur d'interface et obtenir le même comportement , et comment ferais-je quelque chose comme ça?

customView.m

#import <UIKit/UIKit.h> 
#import <QuartzCore/QuartzCore.h> 

@interface CustomView : UIScrollView <UIScrollViewDelegate> { 

    UIScrollView *scrollView; 
    UIImageView  *imageView; 

} 

@property (nonatomic, retain) IBOutlet UIScrollView  *scrollView; 
@property (nonatomic, retain) UIImageView    *imageView; 

customView.m

#import <UIKit/UIKit.h> 

@implementation CustomView 
@synthesize scrollView, imageView; 


    - (id)init { 

     if (self = [super init]) { 

      // Initialization code 
      UIImageView *temp = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]]; 
      self.imageView = temp; 
      [temp release]; 

      scrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height); 
      //Other Scroll View Properties 
      scrollView.delegate = self; 
      [scrollView addSubview:imageView]; 
     } 

     return self; 
    } 


    - (void)dealloc { 
     [scrollView release]; 
     [imageView release]; 
     [super dealloc]; 
    } 


    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

     //Perform an action 

    } 

    @end 
+1

Quoi de neuf avec la deuxième UIScrollView? – Brandon

Répondre

5

Vous pouvez créer une instance de CustomView dans IB assez facilement. Faites simplement glisser un UIScrollView et positionnez-le comme vous le souhaitez. Puis ouvrez l'inspecteur d'identité (cmd + 4) et changez la classe en CustomView. Vous pouvez ensuite l'accrocher à un point de vente comme d'habitude.

+0

Alors devrais-je créer une instance de cette classe dans mon contrôleur de vue, puis alloc et init dans la méthode viewDidLoad? – cgossain

+0

Vous traiterez cela comme n'importe quel autre point de vente IB. Donc, ajoutez l'ivar à votre contrôleur, ajoutez le @property avec le modificateur 'IBOutlet', @synthesize, libérez-le dans' viewDidUnload' et 'dealloc', et enfin connectez la sortie dans IB. Puis, au moment où la méthode 'viewDidLoad' se déclenche dans votre contrôleur, une instance de cette classe aurait été entièrement instanciée et ajoutée à la vue du contrôleur. Tout cela se passe en arrière-plan, vous n'avez pas besoin de l'allouer vous-même. –

+1

Je l'ai fait exactement mais il semble ne pas charger mon affichage dans la vue de défilement – cgossain

2

Voulez-vous vraiment un UIScrollView dans votre UIScrollView?

Votre instance de scrollView doit être nulle dans votre méthode init, l'accès ne fonctionnera donc pas comme prévu.

Je ne suis pas sûr que toute la construction/la hiérarchie est ce que vous voulez ...

+0

bien honnêtement j'essaye de créer un contrôle fait sur commande qui utilise un UIScrollView pour glisser de gauche à droite et croyez-moi cela fonctionne très bien. La seule chose est que je voudrais créer une classe personnalisée pour mon contrôle afin que je puisse le connecter dans un constructeur d'interface dans un très et avoir les spécificités effectuées dans la clandestinité – cgossain

+1

Ensuite, vous devriez probablement * soit * hériter de UIScrollView * ou * hérite d'un UIView normal et en contient un, mais pas les deux. – Eiko

Questions connexes