2013-06-18 3 views
3

선택한 행의 값을 컨트롤러로 보려고했습니다. 새로운 뷰 컨트롤러에서 null 값을 반환하는 로그. 내 실수는 어디에서 발생합니까?선택한 행의 값을 뷰 컨트롤러로 전달

2013-06-18 17:28:59.394 App[1790:c07] ID is Here: 35023 

2013-06-18 17:28:59.397 App[1790:c07] Value in Next view (null) 

2013-06-18 17:28:59.398 App[1790:c07] Label is Here <UILabel: 0x9139810; 
frame = (14 140; 255 16); clipsToBounds = YES; opaque = NO; 
autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x915ab10>> 

TableViewController 코드 :

NSString *localStringValue; 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{  
    NSUInteger row = [indexPath row]; 
    NSString *value = [myArray objectAtIndex:row]; 

    DetailViewController *second=[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil] ; 

    second.PassID=value; 

    [self presentModalViewController:second animated:YES]; 

    localStringValue = [tableView cellForRowAtIndexPath:indexPath].textLabel.text; 
    NSLog(@"ID is Here: %@", value); 
} 

다음보기 컨트롤러 코드 :

.H

@interface DetailViewController : UIViewController 
{ 
    NSString *PassID; 
} 
@property (nonatomic, retain) NSString *PassID; 
@property (unsafe_unretained, nonatomic) IBOutlet UILabel *label; 

하는 .m 코드

- (void)viewDidLoad 
{ 

    label.text=PassID; 
    NSLog(@"Label is Here %@",label); 

    [super viewDidLoad]; 
} 
,536,
+0

self.label을 인쇄 해보십시오. –

+1

iVar의'label' 속성과'label' 속성은 모든 곳에서 혼란을 야기합니다. 하나 또는 다른 하나를 제거하십시오 (필요에 따라 iVar 제거라고 말합니다). Xcode는 일반적으로 속성 (일반적으로 _ (iVar))에 대한 iVar를 자동으로 만듭니다. – Putz1103

+0

먼저 현재 표시된 명령 시퀀스를 변경 한 다음 값을 할당하십시오. [self presentModalViewController : second animated : YES]; second.label = value; – prasad

답변

1
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{  
    NSUInteger row = [indexPath row]; 
    NSString *value = [myArray objectAtIndex:row]; 

    DetailViewController *second=[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil] ; 

/// second.PassID=value; ///Remove the line here 


    [self presentModalViewController:second animated:YES]; 

    second.PassID=value; ///assign the value after presenting 


    localStringValue = [tableView cellForRowAtIndexPath:indexPath].textLabel.text; 
    NSLog(@"ID is Here: %@", value); 
} 
+0

.m - (void) viewDidLoad { label.text = PassID; NSLog (@ "Label is Here % @", PassID); [super viewDidLoad];} 로그 : 레이블이 여기에 있습니다 (null) – Mhmt

0

NSLog(@"Label is Here %@", self.label);을 시도해보고 정상적으로 작동하는지 확인하십시오.

같은 이름의 속성을 선언 할 때 .h 파일의 ivar은 필요하지 않습니다. DetailViewController.h에

+0

시도했습니다. 해결할 수 없음 – Mhmt

0

변경 한

@interface DetailViewController : UIViewController 
@property (nonatomic, retain) NSString *label; 
DetailViewController.m

-(void)setLabelText:(NSString *)label{ 
    if(_label!=label) 
     _label = label; 
} 

사용할 함수

[제 setLabelText : 값];

NSLog로

인쇄 (@ self.label "라벨 여기에 @ %이다");

+0

동일합니다. 새 뷰 컨트롤러에서 null을 반환하십시오. 다음 뷰 컨트롤러에서 – Mhmt

관련 문제