从父视图控制器访问容器视图中的UIScrollView内容偏移量

时间:2014-07-24 08:40:19

标签: ios objective-c uiscrollview uistoryboard uicontainerview

我在访问ContentOffset的{​​{1}}时遇到问题。我之前没有遇到任何问题,但这次UIScrollView位于与UIScrollView相关联的Container View内。

为了更好地了解我的情况,这里有一个方案和图片:

MenuViewController => 容器视图 => ScrollView1ViewController => ScrollView1

enter image description here

ViewController使用UIScrollView中的ContentOffset链接IBOutlet ScrollView1ViewController.h。{/ 1}}

所以我的问题是:是否可以从ContentOffset了解UIScrollView的{​​{1}}?也许在MenuViewController.m

中的ScrollView1ViewController.h内导入IBOutlet

ScrollView1ViewController.h

MenuViewController.m

MenuViewController.m

#import <UIKit/UIKit.h>

@interface ScrollView1ViewController : UIViewController <UIScrollViewDelegate>
{
}

@property (weak, nonatomic)    IBOutlet    UIScrollView    *scrollView1;

@end

如果您需要更多代码和/或图片来更好地了解我的问题,请不要犹豫。

由于

2 个答案:

答案 0 :(得分:1)

我可以看到这种情况的一种方法是,如果你创建一个函数来在ScrollView1ViewController中返回scrollview的contentOffset

- (CGRect)returnContentOffSet
{
    return myScrollView.contentOffset;
}

尝试从MenuViewController调用该方法

答案 1 :(得分:0)

设置容器视图控制器时,如果您有多个子视图控制器,则必须将ScrollView1ViewController的引用存储为数组中的属性或实例:

@interface MenuViewController

@property (nonatomic, strong) ScrollView1ViewController *subVC1;
...

@end

所以,你有一个ScrollView1ViewController的引用,你可以不去:

// ------------------------------------------------
// Example button tap to get scrollview offset
// this method is inside your MenuViewController.m
// ------------------------------------------------
-(void)buttonTapped:(id)sender
{
    CGPoint contentOffset = self.subVC1.scrollView.contentOffset;

    NSLog(@"ScrollView contentOffset = %lf, %lf", contentOffset.x, contentOffset.y);
}

注意:

我假设在你的ScrollView1ViewController中,你有一个对scrollView作为属性的引用。

这有帮助吗?