如何更改UIScrollView Xcode的ContentOffSet

时间:2014-07-12 12:15:45

标签: ios objective-c uiscrollview contentoffset

我使用编程式代码创建一个UIScrollView,我的视图中有一个按钮(UIScrollView中不存在)。

当我点击此按钮时,转到下一页,进行模态转换。我在下一页中创建了取消按钮,当我点击它返回主页面时(此页面有UIScrollView)。

我想点击取消按钮并返回主页面调用主页面中的一个方法,并在此方法中更改ContentOfSet我的ScrollView ...但不能正常工作!!!!

这是我的代码:

mainView.m

- (void)viewDidLoad{
    UIScrollView *scrollbar = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,width, height)];
    scrollbar.directionalLockEnabled = YES;
    scrollbar.backgroundColor = [UIColor whiteColor];
    scrollbar.maximumZoomScale = 1.0;
    scrollbar.minimumZoomScale = 1.0;
    scrollbar.clipsToBounds = YES;
    scrollbar.showsHorizontalScrollIndicator = YES;
    scrollbar.pagingEnabled = YES;
    [scrollbar setContentSize:CGSizeMake(scrollbar.frame.size.width * 4,scrollbar.frame.size.height)];
    scrollbar.contentOffset = CGPointMake(0, 0);
    scrollbar.delegate = self;
    [self.view addSubview:scrollbar];

    [super viewDidLoad];
}

-(void)ChangeMainScrollContentOffset{
    scrollbar.contentOffset = CGPointMake(scrollbar.frame.size.width * (3), 0);
}

此按钮位于根视图中:

- (IBAction)AddView:(id)sender{
    AddStationController *add =  [[AddStationController alloc]initWithNibName:@"AddStationController" bundle:nil];
    [add setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    [self.view.window.rootViewController presentViewController:add animated:YES completion:nil];
}

这个按钮是取消按钮,用于在我的mainView中返回:

- (IBAction)BackView:(id)sender{
    mainView *main = [[mainView alloc]init];
    [main ChangeMainScrollContentOffset];

    [self dismissViewControllerAnimated:YES completion:nil];
}

请指导我!!! 我很困惑为什么不工作ContentOffSet !!!

2 个答案:

答案 0 :(得分:0)

我认为你的问题是你没有添加 ChangeMainScrollContentOffset ViewController.h文件的方法。

只需将其添加到ViewController.h文件中,然后再调用它。

答案 1 :(得分:0)

第二个viewController应该引用以前的视图控制器。

执行此操作时:

mainView *main = [[mainView alloc]init];
[main ChangeMainScrollContentOffset];

您创建另一个不在屏幕上的mainView实例,并在 ANOTHER scrollView上更改contentOffset:)

您应该将属性委托添加到AddStationController

<强> AddStationController.h

@property (nonatomic, weak) mainView* delegate;

<强> MAINVIEW

- (IBAction)AddView:(id)sender{
    AddStationController *add =  [[AddStationController alloc]initWithNibName:@"AddStationController" bundle:nil];
    >> add.delegate = self; <<
    [add setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    [self.view.window.rootViewController presentViewController:add animated:YES completion:nil];
}

取消按钮操作

- (IBAction)BackView:(id)sender{

    >> [self.delegate ChangeMainScrollContentOffset]; <<
    [self dismissViewControllerAnimated:YES completion:nil];
}