Objective-c iPhone читает и меняет позицию UILabel из другого класса - PullRequest
0 голосов
/ 14 ноября 2010

Я пытаюсь изменить чтение и изменить позицию с UILabel. Этот UILabel был создан в Интерфейсном Разработчике, и теперь я хочу прочитать и изменить позицию в другом классе, когда я вызываю метод в классе MainVieController.

Но как я могу это сделать, я прочитал несколько форумов, но не могу заставить его работать. Вот также пример кода. Я надеюсь, что кто-то может помочь мне с этим.

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

1 Ответ

5 голосов
/ 14 ноября 2010

Я не уверен, почему вы создаете еще один экземпляр вашего контроллера представления в NewClass, который загружается вашим контроллером представления. Может быть, просто передать «я» в вызове метода испытаний? Но если вы хотите изменить положение вашей 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...