2010-11-14 13 views
0

J'essaie de changer la lecture et de changer la position d'un UILabel. Ce UILabel a été créé dans Interface Builder et maintenant je veux lire et changer la position dans une autre classe, quand j'appelle une méthode dans la classe MainVieController.Objectif-c iPhone lire et modifier la position UILabel d'une autre classe

Mais comment puis-je faire cela, j'ai lu plusieurs forums, mais je ne peux pas le faire fonctionner. Voici également un exemple de code. J'espère que quelqu'un peut me aider.

MainViewController.h

#import <UIKit/UIKit.h> 
@class NewClass; 

@interface MainViewController : UIViewController { 

    UILabel *daLabel; 

} 

@property (nonatomic, retain) IBOutlet UILabel *daLabel; 

@end 

MainViewController.m

#import "MainViewController.h" 
#import "NewClass.h" 

@implementation MainViewController 
@synthesize daLabel; 

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    NewClass *anotherClass = [[NewClass alloc] init]; 
    [anotherClass test]; 

} 

@end 

NewClass.h

#import <Foundation/Foundation.h> 
@class MainViewController; 

@interface NewClass : NSObject { 

} 

@end 

NewClass.m

#import "NewClass.h" 
#import "MainViewController.h" 

@implementation NewClass 

- (void)test { 

    MainViewController *MainController = [[MainViewController alloc] init]; 

    CGRect labelPosition = MainController.daLabel.frame; 
    NSLog(@"POSITION: %f", labelPosition.origin.x); // Returns 0.000000 

} 

@end 
+0

Vous souhaiterez peut-être retag cette question; aucun des tags n'est utile du tout. Vous ne parlez même pas de la langue et de l'environnement dans lequel il est supposé être. – TeaDrivenDev

+0

Modifié, je l'ai oublié :) – Flappy

Répondre

5

Je ne sais pas pourquoi vous créez une autre instance de votre contrôleur de vue dans NewClass, qui est chargée par votre contrôleur de vue. Peut-être juste passer "self" dans l'appel à la méthode de test? Mais si vous voulez changer la position de votre UILabel, changez simplement labelPosition, puis définissez daLabel.frame sur labelPosition modifié. Par exemple:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NewClass *anotherClass = [[NewClass alloc] init]; 
    [anotherClass test:self]; 

} 

- (void)test:(MainViewController *)mvc { 
    CGRect labelPosition = mvc.daLabel.frame; 
    NSLog(@"POSITION: %f", labelPosition.origin.x); // Returns 0.000000 
    labelPosition.origin.x = 50; 
    mvc.daLabel.frame = labelPosition; // Now moved to 50.000000 
} 
+0

Awsome! Beaucoup de jours je cherchais une réponse pour ceci! Je vous remercie! – Flappy