2014-12-04 5 views
0

현재 UITableView에 고객 목록을 표시해야하는 프로젝트를 진행 중입니다. 그러면 관련 셀이 TabView에 연결되어 자세한 고객 레코드를 탭 UI에 표시합니다.은 UITableCell에서 UITabView로 데이터를 전달합니다.

필요한 TableView로 스토리 보드를 설정하고 잘 채 웁니다. TabViews 모든 설치 및 ID (서비스를 심문하고 추가 데이터를 반환하는 데 필요한) 및 고객 이름을 취할 수있는 기본 TabView 컨트롤러에 사용자 지정 클래스를 추가했습니다. 또한 ID 값을 가져올 필요가있는 첫 번째 탭 UIViewController 추가했습니다.

전달 된 ID 또는 회사 명을 보유 할 수없는 것으로 보입니다. 나는 UITabView의 .h 파일 가져 오기를 시도했다. UITabView .h 파일이 .m 파일의 값으로 채워진다는 것을 알고 있습니다. 고객 이름을 사용하여 탐색 모음의 제목을 업데이트하고 있습니다. 그러나 개별 탭에 대한 .m 파일의 ID를 얻는 줄에서 중단 점을 지정할 때마다 항상 nil을 반환합니다.

나는 시도하고이 값을 얻기 위해 다음 코드를 사용하고 있습니다 : 나는 아무 소용 위의 모든 몇 가지 변화를 시도

companyTabController *headerData = [companyTabController alloc]; 
_companyName_lbl.text = headerData.companyName; 
_companyID_lbl.text = headerData.ID; 

.

+0

이것이 문제가되는지는 확실치 않지만 첫 줄은'[[companyTabController alloc] init];이되어야한다고 생각합니다. ' –

+0

답장을 보내 주셔서 감사합니다. 나는 그것을 게시하고 시도한 후에도 그것을 생각했지만 여전히 기쁨은 없다. –

+0

[[CompanyTabController alloc] init]과 같이 companyTabController를 초기화하십시오. –

답변

5

NSUserDefaults를 사용하여 데이터를 저장할 수도 있습니다. 이는 앱 전체에서 데이터를 저장하는 가장 간단한 방법이라고 생각합니다.

+0

NSUserDefaults의 범위가 장치 전체가 아닌가? 가능한 경우 제 3 자로부터의 잠재적 액세스를 제한하기 위해 이러한 종류의 정보를 '인앱'으로 유지하는 것이 좋습니다. NSUserDefaults의 범위가 앱에 국한되어 있다면 그것은 계획 일 것입니다. 감사. –

1

게시 한 코드에서 headerData은 새로운 인스턴스입니다. 따라서 companyNameID은 어떤 값을 지정하지 않으면 0이됩니다.

네비게이션 바 제목을 업데이트 할 수 있다고 언급 했으므로이 컨트롤러에서도 값을 가져 오는 데 같은 개체를 사용해보십시오. 당신은 당신이 같은 인스턴스화해야합니다 segueing하지 않을 경우

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
companyTabController *companyTC = [segue destinationViewController]; 
companyTC.companyName_lbl.text = headerData.companyName; 
etc 
} 

: 보낸 사람 : : 같은 방법 당신이 당신을 segueing 경우 prepareForSegue를 사용하는

0

한 (어쩌면 당신은 싱글 톤 객체를 사용할 수 있습니다)

- (void) didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
UITableViewCell *selectedCell = [self.tableView cellForRowAtIndexPath:indexPath]; 
companyTabController *companyTC = [self.storyboard instantiateViewControllerWithIdentifier:@"CopmanyTabController"]; 
companyTC.companyName_lbl.text = selectedCell.textLabel.text or = headerData.companyName; 
[self.navigationController pushViewController:companyTC animated:YES]; 
} 
+0

companyName_lbl이 탭보기에서 합성 된 속성인지 확인하십시오. 그냥 지나가는 데이터 인 경우 콘센트 일 필요는 없습니다. – soulshined

+0

그 이름을 제목에 전달하는 방법이지만 첫 번째 VC를 넘어서는 것은 아닙니다. –

+0

죄송합니다. 레이블에 .text를 포함하도록 답변을 편집했습니다. 그래도 작동하지 않는다면 view controller를 정확하게 segueing하지 않거나 두 번째 view controller에 속성을 합성하지 마십시오. headerdata.com의 이름이 nil입니까? – soulshined

관련 문제