gpt4 book ai didi

iphone - 如何在没有 UITableViewController 的情况下推送 UITableView

转载 作者:行者123 更新时间:2023-11-28 23:10:14 25 4
gpt4 key购买 nike

我的应用程序由附图中所示的屏幕组成。

我在 UIViewController 中手动添加了一个 UITableView 对象作为 subview ,并为 UITableView A 实现了数据源和委托(delegate)。它可以显示数据并正确响应触摸事件。

当在 UITableView A 中触摸一行时,我需要再向下推一层。

但是,由于我使用的是 UITableViewController,我该如何推送 UITableView?

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

我明白这很复杂和令人困惑。我只想从 UITableView A 切换到 UITableView B。

如果你能帮助我,我将不胜感激。谢谢。

enter image description here

最佳答案

@Ankit Srivastava:一切皆有可能

didSelectRowAtIndexPath 中创建 TableView 的相同实例并从那里推送它,并为该特定行更新数据源。如果您需要进一步的帮助,请告诉我。我以前做过。

例如,如果您的 TableView Controller 名为 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 是一个数组,其中包含您在当前 TableView Controller 中显示的信息,并且是根据之前在委托(delegate)或任何其他有权访问您的 Controller 的主类中创建的主数组创建的。像这样(在我的示例中在委托(delegate)中创建):

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

关于iphone - 如何在没有 UITableViewController 的情况下推送 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8475175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com