2013-05-29 4 views
1

하나의 UIViewController에서 다른 문자열로 푸시 중입니다. 그러나 NSMutableArray 및 NSLog에 푸시 된 문자열을 추가하면이 값이 항상 0을 반환합니다. 여기 내 코드가 있습니다 : 나는 스토리 보드를 사용하고 있는데 뷰에 두 번째 뷰를 참조해야합니까?하나의 UIViewController에서 다른 데이터로 푸시

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    [_TableView setDelegate:self]; 
    //[_TableView setDataSource:self]; 
    _numberOfRows = [[NSMutableArray alloc]init]; 
} 

-(void)pushName:(NSString*)contactName 
{ 
    //NSLog(@"Pushed name is: %@ ", contactName); 
    _contactName = contactName; 
    NSLog(@"Pushed name is: %@ ", _contactName);//<-- Returns the pushed string fine 

    [_numberOfRows addObject:contactName]; 
    //[self.TableView reloadData]; 
    NSLog(@"Number of names: %d ", [_numberOfRows count]);//<--Always returns a 0 

} 

왜 이것이 작동하지 않는 지 잘 모르겠습니다. 이 질문을 명확하게하기 위해 더 많은 코드가 필요하면 질문하십시오.

+0

여기 좀 봐 http://stackoverflow.com/a/16142163/1328096 – jamil

+0

@Undo 아니요이 질문은 중복되지 않습니다. NSMutableArray를 전달하지 않고 있습니다. 단일 문자열을 전달합니다. 단지 배열을 채우려합니다. 두 번째 UIViewController 그들은 완전히 다른 질문 형제입니다 – Led

+0

@one 같은 원칙. 배열을 전달하는 모든 것도 문자열을 전달할 수 있습니다. 답변을 살펴보고 NSMutableArray를 NSString으로 대체하십시오. – Undo

답변

1

pushName을 호출 할 때 배열이 아직 인스턴스화되지 않은 것처럼 보입니다.

어디에서 전화를 할 수 있습니까?

편집 : 정교하게 작성하십시오. 문제는 두 컨트롤러간에 데이터를 전달하는 것이 아닙니다. 문제는 배열이 addObject 및 count 메시지에 응답하지 않는 것 같습니다.

어레이에서 지연 인스턴스화를 사용해보십시오. 제대로 작동해야합니다.

편집 2 : 시도는 방법 추가 : 코드 스 니펫을

- (NSMutableArray *)numberOfRows: 
{ 
    if(_numberOfRows == nil) _numberOfRows = [[NSMutableArray alloc] init] 
    return _numberOfRows 
} 

을 그리고 당신은 _numberOfRows를 사용하는 경우 self.numberOfRows 사용해보십시오, 즉

[self.numberOfRows addObject:contactName]; 
//[self.TableView reloadData]; 
NSLog(@"Number of names: %d ", [self.numberOfRows count]);//<--Should return 1 or more now. 

편집 3 : 아, 그리고 당신은 당신이 그렇게 할 경우 viewDidLoad에서 인스턴스를 제거 할 수 있습니다. 그러나 당신은 그것을 알고있었습니다.

EDIT 4 : 코드 스 니펫 수정. 미안해, 너무 많이 편집 해. 올바른 대답을 얻으려고 노력하는 것뿐입니다.

+0

감사합니다. – Led

관련 문제