2014-01-22 3 views
-1

Я знаю, что это было опубликовано много раз, но я не могу заставить его работать, ошибок в моем коде не обнаружено (найдено Xcode), но то, что я пытаюсь сделать isn Не работаем.Использование значения переменной из другого класса Objective-c

1- Установка: У меня есть 2 классов, ViewController (UIViewController) и GraphView (UIView)

2- Что я пытаюсь сделать: У меня есть тип BOOL переменной plotPressedVC в ViewController, которая принимает начальное значение NO. После нажатия кнопки (это IBAction находится в файле ViewController.m) plotPressedVC = YES. Из этого в моем файле GraphView.m у меня есть оператор if, состояние которого выполняется, если pressed = YES.

3- Мой код:

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 
    @public BOOL plotPressedVC; 
} 

- (IBAction)plot:(id)sender; 

@end 

ViewController.h

#import "ViewController.h" 
#import "GraphView.h" 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    plotPressedVC = YES; 
} 

- (IBAction)plot:(id)sender { 
    plotPressedVC = YES; 

    GraphView *plotPress = [[GraphView alloc] init]; 
    plotPress.plotPressed = plotPressedVC; 
} 

@end 

GraphView.h

#import <UIKit/UIKit.h> 


@interface GraphView : UIView { 
    BOOL plotPressed; 
} 

@property (nonatomic) BOOL plotPressed; 

@end 

GraphView.m

#import "GraphView.h" 
#import "ViewController.h" 

@implementation GraphView 

- (void)drawLineGraphWithContext:(CGContextRef)ctx { 

    if (plotPressed == YES) { 
     NSLog(@"yep");  
    } 

    // Other code that I want to be in if statement 
} 

@end 

4- Вопрос: Что я сделал неправильно для если оператор условия, чтобы не были выполнены при нажатии на кнопку plot?

EDIT: добавлен NSlog в конце plot действий, я получаю значение 80, -64, -128 ...

- (IBAction)plot:(id)sender { 

    plotPressedVC = YES; 

    NSLog(@"%hhd",plotPressedVC); 

    GraphView *plotPress = [[GraphView alloc] init]; 
    plotPress.plotPressed = plotPressedVC; 

    NSLog(@"%hhd",plotPress); 

} 

Нового Вопрос: Каким образом plotPress получает другие цифры, чем 0 или 1?

+0

Я отредактировал код, я добавил NSLog, и это не дает мне значения BOOL. Я думаю, именно поэтому я отредактирую вопрос – uti0mnia

+0

Ваш NSLog регистрирует значение вида графика. Он должен сказать NSLog (@ "% d", plotPress.plotPressed), но это не проблема с вашим кодом. – jrturton

+0

Возможный дубликат [Objective-c Получение переменной из другого класса] (http: // stackoverflow.com/questions/12539183/object-c-getting-variable-from-another-classe) –

ответ

2

Его спрашивали много раз, и он обычно имеет тот же ответ.

Проблема здесь:

GraphView *plotPress = [[GraphView alloc] init]; 
plotPress.plotPressed = plotPressedVC; 

Здесь вы создаете новый вид графика, установите значение на нем, а потом ничего не делать с этим. Вы должны иметь выход или свойство для имеющегося графика и установить значение plotPressed.

В настоящее время этот вид графа никогда не добавляется в другое представление, а под ARC немедленно освобождается в конце метода.

+0

Как создать свойство существующего GraphView? Я думал, что «plotPressed» был собственностью? – uti0mnia

+0

Если вы создали макет в построителе интерфейса, вам нужно сделать выход и подключить его. Там есть сотни учебных пособий. – jrturton

+0

@KChockey - требуется мысль. –

Смежные вопросы