2011-12-12 8 views
0

내 앱은 첨부 된 이미지와 같이 화면으로 구성됩니다.UITableViewController없이 UITableView를 푸시하는 방법

UIViewController에서 수동으로 UITableView 개체를 하위 뷰로 추가했으며 데이터 원본을 구현하고 UITableView A를 위임했습니다. 데이터를 표시하고 터치 이벤트를 올바르게 응답 할 수 있습니다.

내가이있는 UITableViewController를 사용하고 있기 때문에 행이,

그러나 jQuery과 A에 터치 할 때 한 번 더 수준을 아래로 밀어 필요

, 어떻게 내가 jQuery과 밀어 수 있습니까?

제한 사항으로 인해 현재 UIViewController에서 다른 UIViewController로 푸시 할 수 없습니다.

매우 복잡하고 혼란 스럽습니다. 난 그냥 UITableView A에서 UITableView B로 전환하고 싶다.

나에게 도움의 손길을 제공 할 수 있으면 감사하게 생각한다. 고맙습니다.

enter image description here

답변

2

@Ankit 스리 바스타 바는 : 모든 didSelectRowAtIndexPath에서 테이블 뷰의 동일한 인스턴스를 생성하고 특정 행에 대해 업데이트 된 DataSource를 사용해 거기에서 밀어

수 있습니다. 도움이 더 필요하면 알려주세요. 나는 이것을 전에했다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if ([[self.navigationController viewControllers] count] < 3) { 
    RootViewController *detailViewController = [[RootViewController alloc] initWithStyle:UITableViewStylePlain]; 
    detailViewController.rootArray = [self.rootArray objectAtIndex:indexPath.row]; 
    [self.navigationController pushViewController:detailViewController animated:YES]; 
    [detailViewController release]; 
    } 
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

numberOfRowsInSection :

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [rootArray count]; 
} 

rootArray 당신이 표시 정보를 포함하는 배열을

는 예를 들어, 테이블 뷰 컨트롤러는 사용자의 didSelectRowAtIndexPath 방법은 다음과 같이한다 RootViewController 이름을 지정하면 현재 테이블보기 컨트롤러에 있으며 위임자 또는 컨트롤러에 대한 액세스 권한이있는 다른 마스터 클래스에서 이전에 만든 마스터 배열에서 만들어집니다.

NSArray *array1 = [NSArray arrayWithObjects:@"1", @"2", @"3", nil]; 
    NSArray *array2 = [NSArray arrayWithObjects:@"4", @"5", nil]; 
    NSArray *array3 = [NSArray arrayWithObjects:@"6", @"7", nil]; 
    NSArray *array4 = [NSArray arrayWithObjects:@"8", @"9", nil]; 
    NSArray *array5 = [NSArray arrayWithObjects:@"10", @"11", @"12", nil]; 
    NSArray *array6 = [NSArray arrayWithObjects:@"14", @"15", @"13", nil]; 
    NSArray *array7 = [NSArray arrayWithObjects:@"16", @"17", nil]; 
    NSArray *array8 = [NSArray arrayWithObjects:@"19", @"18", nil]; 
    NSArray *array9 = [NSArray arrayWithObjects:@"20", @"21", @"22", nil]; 

    NSMutableArray *mutable1 = [NSMutableArray arrayWithObjects:array1, array2, array3, nil]; 
    NSMutableArray *mutable2 = [NSMutableArray arrayWithObjects:array4, array5, array6, nil]; 
    NSMutableArray *mutable3 = [NSMutableArray arrayWithObjects:array7, array8, array9, nil]; 

    self.initialArray = [NSMutableArray arrayWithObjects:mutable1, mutable2, mutable3, nil]; 

그리고 현재 tableViewController에 대한 viewDidLoad을, 그래서 당신은 첫 번째로드에 대한 배열이 :이처럼 (내 예에 위임에서 만든)

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    if ([[self.navigationController viewControllers] count] == 1) { 
     self.rootArray = appDelegate.initialArray; 
    } 
} 
+0

귀하의 도움이 필요합니다. 데이터 소스를 수정하는 방법은 알고 있지만 UITableView를 푸시 (push)할지 모르겠습니다. 어떻게 연락 할 수 있습니까? – user403015

+0

안녕하세요. Skype에 내 연락처를 추가했습니다. 내 요청을 수락하십시오. 고맙습니다. – user403015

0

당신이 tableViewController를 사용 해봤를 ? 어쩌면 뷰 계층 구조에 영향을주지 않고 tableViewController를 가질 수 있을까요? tableViewController를 사용하지만 UIviewController의 뷰에 subview로 tableview를 추가하십시오. 현재 내가하고 있다고 가정합니다.

또는 전환하려는 경우 테이블 뷰를 두 개 추가하고 가시성을 번갈아 가며 사용 하시겠습니까?

+0

UITableView를 크기를 조정할 수 없으며 다른 UIView를 사용할 수 없기 때문에 UITableViewController를 사용할 수 없습니다. – user403015

관련 문제