UITableView在同一个ViewController中进行segue

时间:2015-02-24 20:20:34

标签: ios uitableview segue

我有一个UIViewController,它包含一个map和一个连接在一起的tableView,它看起来像这样:

enter image description here

我希望能够将tableView推送到同一视图控制器中的另一个tableView,以便地图保持在原地。当然,我希望能够通过左上方导航栏中出现的按钮以编程方式向后展开segue。

在弹出窗口中放置的iPad tableView控制器中可以观察到类似的行为。我将如何在Swift(iOS 8)中执行此操作?

非常感谢任何代码片段或指向现有代码示例的指针。

3 个答案:

答案 0 :(得分:2)

您可以像这样实现视图控制器包含:

- (void)viewDidLoad {
        [super viewDidLoad];

        // Setup the container view
        _containerView = [[UIView alloc] initWithFrame: // DESIRED FRAME];
        _containerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        [self.view addSubview:_containerView];

        // Setup the main view controller
        [self addChildViewController:_mainViewController];
        _mainViewController.view.frame = _containerView.bounds;
        [_containerView addSubview:_mainViewController.view];
        [_mainViewController didMoveToParentViewController:self];
}

现在,您可以在单独的视图控制器中创建两个表视图。听起来你应该在主视图控制器中添加一个导航控制器(" mainViewController"在代码片段中),这样你就可以推送"推送"堆栈中的新表。

答案 1 :(得分:0)

这在技术上不是"推" - 当用户在tableview上选择一个单元格时,触发对tableview委托方法的调用

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

...你应该从屏幕右侧引入第二张桌子视图。

每个tableview数据源和委托方法应该看起来区分第一个和第二个tableview。这是cellForRowAtIndexPath的一个例子:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if tableView == self.tableView1 {
        return self.collection1.count
    } else if tableView == self.tableView2 {
        return self.collection2.count
    }
    return 0;
}

答案 2 :(得分:0)

我认为您应该使用Basic UIView Animation来显示第一个表的didSelectRowAtIndexPath上屏幕左侧移动的秒表