我有一个UIViewController,它包含一个map和一个连接在一起的tableView,它看起来像这样:
我希望能够将tableView推送到同一视图控制器中的另一个tableView,以便地图保持在原地。当然,我希望能够通过左上方导航栏中出现的按钮以编程方式向后展开segue。
在弹出窗口中放置的iPad tableView控制器中可以观察到类似的行为。我将如何在Swift(iOS 8)中执行此操作?
非常感谢任何代码片段或指向现有代码示例的指针。
答案 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上屏幕左侧移动的秒表