2012-07-10 147 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

相關問題