2010-11-14 58 views
0

我嘗試更改讀取並從UILabel更改位置。這個UILabel已經在Interface Builder中創建,現在我想要讀取和更改另一個類中的位置,當我調用MainVieController類中的方法時。Objective-c iPhone讀取並更改另一個類的UILabel位置

但我該怎麼做,我已經閱讀了幾個論壇,但我無法得到它的工作。這裏也有一些示例代碼。我希望有人能幫助我。

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

您可能想要重新標記此問題;沒有一個標籤是有幫助的。你甚至沒有提及這個應該在的語言和環境。 – TeaDrivenDev 2010-11-14 15:49:09

+0

改變了,我忘了:) – Flappy 2010-11-14 15:59:12

回答

5

我不確定爲什麼你要在視圖控制器加載的NewClass中創建視圖控制器的另一個實例。也許只是在調用測試方法時傳遞「self」?但是,如果您想更改UILabel的位置,只需更改labelPosition,然後將daLabel.frame設置爲修改後的labelPosition。例如:

- (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!很多天,我正在爲此尋找答案!謝謝! – Flappy 2010-11-14 16:26:29

相關問題