2011-12-12 124 views
0

我的应用程序由附加图像中显示的屏幕组成。如何在没有UITableViewController的情况下推送UITableView

我在UIViewController中手动添加了一个UITableView对象作为子视图,并且实现了UITableView A的数据源和委托。它可以显示数据并正确反应触摸事件。

我需要推动一个多级下调当行的UITableView A.被触摸

然而,由于我使用一个UITableViewController,我怎么能推的UITableView?

由于限制,不允许从当前UIViewController推送到另一个UIViewController。

我知道这很复杂和令人困惑。我只是想从UITableView A切换到UITableView B.

如果您能为我提供帮助,请欣赏它。谢谢。

enter image description here

回答

2

@Ankit塔瓦:一切皆有可能

didSelectRowAtIndexPath创建表视图中的同一个实例,并从那里与数据源更新可在特定行推动它。如果您需要进一步的帮助,请告诉我。我以前做过这个。

例如,如果表视图控制器被命名为RootViewController,您的didSelectRowAtIndexPath方法应该是这样的:

- (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是包含可显示以下的信息的阵列在当前的表视图控制器中,并且是由一个主控阵列创建的,而之前在委托或其他可以访问控制器的主控类中创建。像这样(在委托创建在我的例子):

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]; 

而且viewDidLoad当前tableViewController,所以你必须在第一个载荷的数组:

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

我需要你的帮助。我知道如何修改数据源,但我不知道推UITableView。我该如何与你联系? – user403015

+0

嗨,刚刚添加您的联系人在我的Skype。请接受我的请求。谢谢。 – user403015

0

您是否尝试过使用tableViewController ?也许有一个tableViewController不影响你的视图层次?使用tableViewController,但将tableview作为子视图添加到您的UIViewController视图中 - 这正是我假设您正在执行的操作。

或者,如果您只想切换它们,只需添加两个表格并交替显示它们?

+0

我无法使用UITableViewController,因为无法调整UITableView的大小,并且不允许使用其他UIViews。 – user403015

相关问题