Хорошо, поэтому я пытаюсь передать данные с одного контроллера вида на другой с помощью следующего кода, но его не работает, и я понятия не имею, почему.Передача данных через ViewControllers Not Working
В моей ViewController.m я импортировал ViewControllerTwo.h и объявил ViewControllerTwo:
#import "ViewController.h"
#import "ViewControllerTwo.h"
@interface ViewController()
@end
@implementation ViewController
{
ViewControllerTwo *settings;
}
@synthesize blockSizeLB;
@synthesize wpmLB;
@synthesize textTV;
@synthesize slider;
@synthesize stepper;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//sets label to corresponding value
wpmLB.text = [NSString stringWithFormat:@"WPM: %@", [[NSNumber numberWithInt:slider.value] stringValue]];
//configure stepper and its label to default values of 1
stepper.value = 1;
blockSizeLB.text = [NSString stringWithFormat:@"Block Size: %@", [[NSNumber numberWithInt:stepper.value] stringValue]];
//sets properties for next ViewController
settings = [[ViewControllerTwo alloc] init];
settings.timerValue = 60/slider.value;
settings.text = textTV.text;
settings.blockCount = stepper.value;
}
В ViewControllerTwo.h у меня есть:
@property (nonatomic) float timerValue;
@property (nonatomic) NSString * text;
@property (nonatomic) int blockCount;
Позже в ViewController.m мне нужно измените свойства, определенные в ViewControllerTwo: Метод из ViewController.m. Это также сделано ранее в моем viewDidLoad, чтобы установить значения по умолчанию свойств:
- (IBAction)sliderSlide:(id)sender
{
//event when the slider value is changed
//rounds value to nearest increment of 5
int increment = 5 * floor(((int)slider.value/5)+0.5);
[slider setValue:increment animated:YES];
//changes WPM: 0 label text
wpmLB.text = [NSString stringWithFormat:@"WPM: %@", [[NSNumber numberWithInt:increment] stringValue]];
//sets properties for next ViewController
settings.timerValue = 60/slider.value;
}
Я стараюсь, чтобы проверить, если это удастся, вызвав метод в ViewControllerTwo.m, который регистрирует его свойство blockCount через NSLog. Выходной результат (ноль) означает, что я был неуспешен в передаче данных с ViewController.m в ViewControllerTwo
Где ты инициализировать переменную 'settings', чтобы указать на фактический объект ViewControllerTwo? –
Я обновил его, включив мой метод viewDidLoad, где я его разместил. Может ли это потому, что Im устанавливает значения в свойство до того, как оно будет синтезировано в ViewControllerTwo.m? – user2692560
Я подозреваю, что экземпляр 'ViewControllerTwo', который вы создаете как' settings', является тем же, который вы тестируете. Если вы регистрируете значение 'settings', когда вы присваиваете ему значения и значение' self', когда 'ViewControllerTwo' печатает свой' blockCount', они показывают тот же адрес? –