2013-11-06 4 views
0

Может кто-нибудь, пожалуйста, посмотрите, где я ошибаюсь?Свойство объекта, заданное как null

У меня есть объект Object с единственным свойством NSString.

У меня есть MainViewController с кнопкой на нем. Кнопка создается программно и добавляется во время выполнения.

Когда вы нажмете эту кнопку, предполагается установить значение объекта «Свойство» для строки и передать его следующему ViewController.

Мне удаётся установить значение свойства Object, но когда я вызываю это значение для его передачи, оно имеет значение null. Я пробовал много разных решений, но ничего не работает. Может ли кто-нибудь увидеть, где моя проблема? Я добавил все соответствующий код ниже

Object.h

@interface Object : NSObject 
@property (nonatomic, strong) NSString *content; 

Object.m

#import "Object.h" 
@implementation Object 
@synthesize content; 

Затем в MianViewController создать кнопку и установите значение свойства объекта MainViewController.h

@interface MainViewController : UIViewController 
@property (nonatomic, strong) UIButton *myButton; 

MainViewController.m

#import "MainViewController.h" 
#import "SecondaryViewController.h" 
#import "Object.h" 
. 
. 
@synthesize myButton; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    myButton.tag = 1; 
    myButton.frame = CGRectMake(20, 140, 280.f, 40.f); 
    UIImage *airButton = [UIImage imageNamed:@"gettingHereByAirButton.png"]; 
    [myButton setBackgroundImage:airButton forState:UIControlStateNormal]; 
    [self.view addSubview:myButton]; 
    [myButton addTarget:self action:@selector(myButtonClicked) forControlEvents:UIControlEventTouchUpInside]; 
} 

- (void) myButtonClicked 
{ 
    [self performSegueWithIdentifier:@"mySegue" sender:self]; 
} 

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSLog(@"Getting Here..."); 

    Object *object = [[Object alloc] init]; 
    object.content = @"This is the content of the Object"; 

    NSLog(@"Content of Object Set To: %@", object.content); 

    SecondaryViewController *vc; 
    vc.object = object; 

    NSLog(@"Object: %@", object); 
    NSLog(@"Object.content: %@", object.content); 
    NSLog(@"ViewController.object.content: %@", vc.object.content); 

    NSLog(@"Just Did Stuff..."); 
} 

И SecondaryViewController где метка должна быть установлена ​​в том, что из строки объекта SecondaryViewController.h

#import "Object.h" 

@interface SecondaryViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UILabel *contentLabel; 
@property (nonatomic, strong) Object *object; 

SecondaryViewController.m

@synthesize object; 
@synthesize contentLabel; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSLog(@"Content of Object: %@", object.content); 

    self.contentLabel.text = object.content; 
} 

И, наконец, захват экрана моего NSLog, когда приложение запущено HERE

ответ

3
SecondaryViewController *vc; 

Должно быть

SecondaryViewController *vc = (SecondaryViewController *)segue.destinationViewController; 
+0

ОК, так что я не знаю, что я сделал, но я попробовал это раньше, и он не работает для меня. Изменил его в соответствии с ответом и теперь отлично работает. Бесконечно благодарен – heyred

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