2012-07-10 5 views
0

나는 다음 주 코드가 작동하지 않는 이유를 알아 내려고 온종일 오후 내내 머리카락을 꺼내 ​​왔습니다. 내가하려고하는 것은 하나의 클래스에서 다른 클래스로 문자열을 전달하는 것입니다. 내 FirstDetailViewController.h 파일에서@property를 사용하여 한 클래스에서 다른 클래스로 값 전달

나는

@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]; 

} 

에 대한 값을 설정하려고있는 NSString를 선언 할 때 I 출력 infoForArray에서 FirstDetailViewController.h는 null입니다.

도움이 될만한 정보가 있으면 누락 된 간단한 단계가 있다고 생각하지만 도움이되지 않습니다.


편집 : 여기 내 생각 엔 당신이 어딘가에 infoForArray 확인되어있는 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

+0

옙,'@synthesize 내비게이션 바, infoForArray,' – BloonsTowerDefence

답변

0

문제 영역이 FirstDetailViewController에있는 것처럼 들립니다. 나는 그 일을 알 수 있도록 코드를 게시하는 것이 좋습니다.

+0

좋아, 나는 질문을 편집 – BloonsTowerDefence

+0

불행히도, 나는 문제를 볼 수 없다. 그래서 나는 너와 비슷한 프로그램을 만들었지 만, 내 말은 실제로 메시지를 보여준다. 나에게 뛰어든 유일한 것은 XIB 파일의 이름이다. 일반적으로 XIB에서로드 할 때 이름이 @ "FirstDetailView"대신 @ "FirstDetailViewController"에서로드 될 때와 같이 이름이보기 컨트롤러 이름과 일치합니다. 여러 개의 XIB가 놓여 있고 설정하려는 값을 폭발시키는 Info message라는 콘센트가있는 XIB를 사용할 수 있습니까? – jwj

+0

FirstDetailViewController .h 및 .m 파일은 FirstDetailView.xib (일부 사과 샘플 코드로 시작됨)와 함께 이미 나를 위해 만들어졌습니다. 이름을 바꾸고 무슨 일이 일어나는지 보려고합니다. 편집은 아직 시도했지만 아무 것도 시도하지 않았습니다. 나는 처음부터 다시 시작해야 할 것 같아. (웃음) 어떤 일이 일어날 지 알 겠어. – BloonsTowerDefence

0

의 코드는 발생하는 FirstDetailViewController의 인스턴스화 프로세스 s 전에 temp.infoForArray = didLoadMessage을 설정하십시오.

infoForArrayviewDidLoad에서 확인하는 경우 너무 빠릅니다. 뷰를 메모리에 넣으면 viewDidLoad이 트리거됩니다. 원하는 것은 viewDidAppear입니다. 직접 추가해야 할 수도 있습니다.

+0

나는'의 viewDidLoad()'방식 viewwillappear 또는 viewdidappear 내 FirstDetailViewController – BloonsTowerDefence

+0

검사의 그것을 확인하고 참조하고 – ChrisH

+0

@HelloWorld 당신이 Grinding01_DetailViewController 단계별 때, 당신이 보여요 infoForArray가 설정되고 있습니까? 아직 설정하기 전에 확인하는 중입니다. ChrisH가 말했듯이, viewDidAppear은 아마도 당신에게 맞는 자리입니다. – JoeCortopassi

관련 문제