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

标签 iphone ios ipad

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

我在 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/

相关文章:

ios - iOS 8 中的自定义键盘

ios - 是否允许隐藏 iAds,即使它们可用?

ios - App Store 提交,iPhone 与 iPad 尺寸

ios - xcode 8 中的 btnactionsender 而不是 btnaction

iphone - 我需要一些关于 DOCX 格式同步(iOS)的建议以使用 google Drive api。任何人都可以帮助我吗?

ios - UITabBar swift 中缺少按钮

iphone - 我的 TableView 上的删除功能似乎不起作用

javascript - 是否可以在 Objective-C (iphone) 中使用 JavaScript?

ios - Swift:检测 UIWebView 中的当前 URL

ios - 是否可以让 iPad 显示没有弹出窗口的正常操作表?