0

我正在尝试开发一些可重用的 ViewController 类。

在我的旧视图控制器(iOS5 之前)中,我通常在视图控制器上有两个表视图。

我正在计划重写,并且正在考虑使用新的 iOS 5 包含 API,请考虑以下示例:

理想情况下,我会使用两个视图控制器,每个视图控制器有 2 个表视图。在任何时候,任何一个 ViewController 都会显示 2 个 tableView。

我想知道我是否应该:使用 4 个 ViewController,每个都有一个 tableView,将它们添加到 ParentContainerView。按照我之前的顺序排列它们。

问题是,为了能够以分开的方式同时显示两个 ViewController,当滑动手势为 IN PROGRESS 时改变 A viewController 的行为

反映滑动手势:

我似乎真的无法弄清楚如何将滑动手势反映到子视图控制器并影响视图控制器的滑动行为。任何例子都会很棒。例如,当右滑动手势正在进行时,索引 0 处的 ViewController 会减小宽度,然后消失到左侧,而索引 2 处的新 ViewController 会出现,而中间的 ViewController(索引 1)会更改其 y 位置而不是其宽度。

任何建议都会很棒,

4

1 回答 1

0

我不知道这是否是您想要的,但我已经使用滚动视图在滚动视图的内容视图中有四个容器视图实现了类似的功能。这些容器视图中的每一个都有一个嵌入到视图控制器的 segue(在您的情况下将是一个 tableViewController)。

所以这就是我的做法:

  1. 我在视图控制器中添加了一个滚动视图
  2. 我将 UIView 拖到滚动视图上并将其框架设置为 {{0,0},{640,548}}
  3. 在第 2 步的视图下方添加了 4 个容器视图(在下方,我的意思是在屏幕左侧对象列表中的视图下方。这样做更容易,因为视图不会显示其全宽画布)。我将它们的帧设置为 {{0,0},{160,548}} {{160,0},{160,548}} {{320,0},{160,548}} 和 {{480,0},{160,548}} . 这给了你四个视图控制器,每个都是屏幕宽度的一半。
  4. 在滚动视图下添加了另一个全尺寸视图(在列表中,但这意味着在视图层次结构的顶部)并使其背景颜色清晰。此视图位于顶部并拦截所有触摸。
  5. 在第 4 步的视图中添加了 2 个滑动手势识别器(一个左在右)。

在视图控制器中,我为滚动视图(scroller)和大型(640 x 548 one)视图(内容)创建了 IBOutlets,并在 .m 文件中添加了以下代码:

@implementation ViewController

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    self.scroller.contentSize = self.content.frame.size;
}

-(IBAction)moveLeft:(id) sender {
    if (self.scroller.contentOffset.x < 320)
        [self.scroller setContentOffset:CGPointMake(self.scroller.contentOffset.x + 160, 0) animated:YES];
}

-(IBAction)moveRight:(id) sender {
    if (self.scroller.contentOffset.x > 0)
        [self.scroller setContentOffset:CGPointMake(self.scroller.contentOffset.x - 160, 0) animated:YES];
}

@end

2 个手势识别器在 IB 中连接到 moveLeft: 和 moveRight: 方法。因此,这使我能够同时在屏幕上显示控制器 1&2、2&3 或 3&4。

于 2012-11-24T06:11:16.473 回答