Я знаю, что это было опубликовано много раз, но я не могу заставить его работать, ошибок в моем коде не обнаружено (найдено 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?
Я отредактировал код, я добавил NSLog, и это не дает мне значения BOOL. Я думаю, именно поэтому я отредактирую вопрос – uti0mnia
Ваш NSLog регистрирует значение вида графика. Он должен сказать NSLog (@ "% d", plotPress.plotPressed), но это не проблема с вашим кодом. – jrturton
Возможный дубликат [Objective-c Получение переменной из другого класса] (http: // stackoverflow.com/questions/12539183/object-c-getting-variable-from-another-classe) –