2012-07-10 143 views
0

我一直在下拉我的头发,试图弄清楚为什么下面的代码不起作用。我所要做的就是传递一个字符串,从一个类到另一个类。使用@property将值从一个类传递到另一个类使用@property

在我FirstDetailViewController.h文件我宣布NSString的

@property(nonatomic, retain) NSString *infoForArray; 

然后在我的Grinding01_DetailViewController.m我尝试的字符串

#import "Grinding01_DetailViewController.h" 
#import "FirstDetailViewController.h" 

@implementation Grinding01_DetailViewController 


... 

    NSString *didLoadMessage = @"Grinding01 Loaded"; 

    FirstDetailViewController *temp = [[FirstDetailViewController alloc] initWithNibName:@"FirstDetailView" bundle:nil]; 

    temp.infoForArray = didLoadMessage; 

    [self.navigationController pushViewController:temp animated:YES]; 

} 

设定的值。当我输出的infoForArray从FirstDetailViewController.h它是空的。

任何帮助将不胜感激,我认为有一个简单的步骤,我失踪,但我只是看不到它。


编辑:下面是来自FirstDetailViewController

FirstDetailViewController.h

#import <UIKit/UIKit.h> 
#import "Protocols.h" 

@interface FirstDetailViewController : UIViewController <SubstitutableDetailViewController> { 

    //for the output 
    IBOutlet UITextView *outputView; 

    UIToolbar *navigationBar; 

    NSMutableArray *logMessages; 

} 

@property (nonatomic, retain) IBOutlet UIToolbar *navigationBar; 

//for incoming messages 
@property(nonatomic, retain) NSString *infoForArray; 


@end 

FirstDetailViewController.m

#import "FirstDetailViewController.h" 

@implementation FirstDetailViewController 

@synthesize navigationBar, infoForArray; 

-(void)viewDidLoad{ 

    [super viewDidLoad]; 

    //The log cannot be changed 
    outputView.editable = NO;  

} 


#pragma mark - 
#pragma mark View lifecycle 

- (void)viewDidUnload { 

    [super viewDidUnload]; 

    self.navigationBar = nil; 

} 

-(void)viewWillAppear:(BOOL)animated{ 

    [super viewWillAppear:YES]; 

    NSLog(@"message: %@", infoForArray); 

    outputView.text = infoForArray; 

} 

#pragma mark - 
#pragma mark Managing the popover 

- (void)showRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem { 

    // Add the popover button to the toolbar. 
    NSMutableArray *itemsArray = [navigationBar.items mutableCopy]; 
    [itemsArray insertObject:barButtonItem atIndex:0]; 
    [navigationBar setItems:itemsArray animated:NO]; 
    [itemsArray release]; 
} 


- (void)invalidateRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem { 

    // Remove the popover button from the toolbar. 
    NSMutableArray *itemsArray = [navigationBar.items mutableCopy]; 
    [itemsArray removeObject:barButtonItem]; 
    [navigationBar setItems:itemsArray animated:NO]; 
    [itemsArray release]; 
} 


#pragma mark - 
#pragma mark Rotation support 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return YES; 
} 


#pragma mark - 
#pragma mark Memory management 

- (void)dealloc { 
    [navigationBar release]; 
    [super dealloc]; 
} 


@end 
+0

您是在FirstDetailViewController实现的顶部合成infoForArray属性吗? – lottscarson 2012-07-10 22:43:49

+0

YEPP,'@合成的导航栏,infoForArray;' – BloonsTowerDefence 2012-07-10 22:45:30

回答

0

这听起来像麻烦的区域是在FirstDetailViewController。我会建议发布代码,以便我们可以看到发生了什么。

+0

好的,我编辑了问题 – BloonsTowerDefence 2012-07-11 14:54:17

+0

不幸的是,我看不到这个问题,所以我制作了类似于你的程序,但我的确显示了这个信息。唯一跳出来的是XIB文件的名称。通常,当我从XIB加载名称与视图控制器名称相匹配时,您将从@“FirstDetailViewController”而不是@“FirstDetailView”加载。是否有可能你有多个XIB躺在身边,并且你正在使用一个名为info消息的Outlet,它正在爆炸你试图设置的值? – jwj 2012-07-11 17:00:49

+0

FirstDetailViewController .h和.m文件已经为我创建,以及FirstDetailView.xib(我开始使用一些苹果示例代码)。我会尝试改变周围的名字,看看会发生什么。编辑只是试了一下,仍然没有。我想我可能会重新开始(笑),看看会发生什么 – BloonsTowerDefence 2012-07-11 17:25:32

0

我的猜测是,你在什么地方检查infoForArray代码FirstDetailViewController的实例化过程发生s之前,你设置temp.infoForArray = didLoadMessage

仅供参考,如果您在viewDidLoad中检查infoForArray,那就太早了。 viewDidLoad将视图放入内存时触发。你想要的是viewDidAppear,你可能需要添加自己

+0

我的'viewDidLoad中()'我FirstDetailViewController – BloonsTowerDefence 2012-07-10 22:46:26

+0

入住viewWillAppear中或viewdidappear的方法检查一下,看看再 – ChrisH 2012-07-10 22:55:08

+0

@HelloWorld所以,当你通过Grinding01_DetailViewController步骤,你看infoForArray被设置?我仍然认为你在设置之前检查它。像ChrisH说的,viewDidAppear可能是你的合适位置 – JoeCortopassi 2012-07-10 23:03:27

相关问题