2012-09-09 2 views
1

질문이 있습니다. 나는 같은 화면에 UITableView 및 자세히보기 (기본적으로 세부 정보를 표시하는 또 다른보기 컨트롤러)가있는보기 컨트롤러가 포함 된 ipad 응용 프로그램이 있습니다. -didSelectRowAtIndexPath이 실행될 때 UITableView의 행 데이터를이 상세보기로 전달해야합니다. 이 작업을 수행하는 방법을 모르겠습니다. 이 작업을 수행하는 방법에 대한 모든 도움말/포인터/샘플 코드? 사전UITableView에서 동일한 화면의 다른 UIViewController로 데이터를 푸시

답변

1

에 도움을

덕분에 jQuery과 뷰 컨트롤러의 대리인을 정의하고 상세 뷰 컨트롤러에서 구현합니다. didSelectRowAtIndexPath가 호출되면 행 데이터를 상세보기 컨트롤러에 전달하여 대리자 메서드를 호출합니다.

대리인의 정의는 같은 모양 :

@class MyTopLevelViewController; 

@protocol MyTopLevelViewControllerDelegate <NSObject> 

-(void)showDetail:(DetailObject *)detail; 

@interface MyTopLevelViewController : UIViewController 

@property (nonatomic, weak) id <MyTopLevelViewControllerDelegate> delegate; 

@end 

및 상세 뷰 컨트롤러 헤더에 대리자를 추가 :

@interface MyDetailViewController : UIViewController <MyTopLevelViewControllerDelegate> 
-1

당신은 다른 뷰 컨트롤러에 데이터를 전달하고자하는 경우 같은 화면에서 didSelectRowAtIndexPath를 사용하면 array를 "objectAtIndex : indexPath.row"와 같이 사용할 수 있습니다. 다음 코드는 도움이 될 수 있습니다 :

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    DetailFoodViewController *detailFoodViewController=[[DetailFoodViewController alloc] initWithNibName:@"DetailFoodViewController" bundle:nil]; 

    JSCategory *jSCategory=[self.categoryResult.JSCategories objectAtIndex:indexPath.row]; 

    detailFoodViewController.jsCategory=jSCategory; 

    detailFoodViewController.oldStoreLocationId=self.oldStoreId; 

    [self.view addSubview:detailFoodViewController.view]; 
    [detailFoodViewController release]; 

} 
+0

새로운보기 컨트롤러의보기를 표시하는 방법에 동의하지 않습니다. UIViewControllerContainment를 구현하고 있지 않다면 뷰 컨트롤러의 뷰를 다른 방식으로 서브 뷰로 추가하는 것은 좋지 않은 생각이며, 일을 혼란스럽게 만들 것입니다. 새로운 viewController를 모달로 표현하거나 푸시하는 것은 다른 viewController에서 viewController를 표시하는 더 좋은 방법입니다. 같은 시각에 있어야하는 경우 : 모순을 사용하십시오. – J2theC

관련 문제