模态segue中的viewcontroller中的uiscrollview

时间:2013-02-21 21:08:33

标签: ios uiscrollview uitableview uistoryboard uistoryboardsegue

我正在使用Xcode 4.6构建iOS 6.x标签栏应用程序并使用Storyboard。在每个选项卡视图中,添加UIScrollView并与放置在其中的任何元素进行交互都没有问题。

然而......当我使用模态视图点击按钮转换到故事板中的新视图时,滚动视图在模态视图中不起作用。

示例:

TestViewController.h和TRViewController.h都包含与此类似的代码:

@property (strong, nonatomic) IBOutlet UIScrollView *scroller;

在TestViewController.m和TRViewController.m中的viewDidLoad方法中:

[_scroller setScrollEnabled:YES];
[_scroller setContentSize:CGSizeMake(320, 1000)];

然后在IB中,插座正确连接到视图:

enter image description here

因此,对于每个视图,我的代码在IB,.h和.m之间被复制/相同。在一个区域工作,但不在另一个区域工作。除此之外,我认为可能与我的问题相关的唯一其他障碍可能来自segue:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"trSegue"]) {        
    TRViewController *_trVC = segue.destinationViewController;
    _trVC.delegate = self;
    }
}

我只是错过了一些如此完全明显的东西吗?一旦我看到解决方案,我认为这将是一个向前推进的手掌......

思考/评论?

提前致谢! - 德鲁

2 个答案:

答案 0 :(得分:1)

我明白了。你必须把你的UIScrollView放在另一个空的UIView中。您的层次结构在界面构建器中看起来像这样:

enter image description here

原因在于模态segue显示您的内容的方式。当你执行push segue时,它实际上将ViewController推送到导航堆栈的最顶层,而使用模态segue则会更改屏幕上显示的内容。我不确定这是否会导致苹果拒绝你的应用程序,但它有效。

答案 1 :(得分:0)

嗯......我发现如果我只是将segue从Modal更改为Push ...它可以很好地工作而无需任何额外的调整/调整。我想我会走这条路,而不是再用它来搞定。

那就是说,我仍然想找到一种方法(如果可能的话)。