如何更改 UIScrollView Xcode 的 ContentOffSet
Posted
技术标签:
【中文标题】如何更改 UIScrollView Xcode 的 ContentOffSet【英文标题】:how to change ContentOffSet of UIScrollView Xcode 【发布时间】:2014-07-12 12:15:44 【问题描述】:我使用编程代码创建了一个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];
这个按钮是取消按钮,用于在我的主视图中返回:
- (IBAction)BackView:(id)sender
mainView *main = [[mainView alloc]init];
[main ChangeMainScrollContentOffset];
[self dismissViewControllerAnimated:YES completion:nil];
请指导我! 我很困惑为什么不工作 ContentOffSet !!!
【问题讨论】:
【参考方案1】:我认为你的问题是你没有添加 ChangeMainScrollContentOffset 方法添加到您的 ViewController.h 文件中。
只需将它添加到 ViewController.h 文件中,然后调用它。
【讨论】:
我的朋友我在mainView中添加了这个方法【参考方案2】:你的第二个 viewController 应该有对前一个 view controller 的引用。
当你这样做时:
mainView *main = [[mainView alloc]init];
[main ChangeMainScrollContentOffset];
您创建另一个不在屏幕上的 mainView 实例并更改 ANOTHER scrollView 上的 contentOffset :)
您应该将属性委托添加到您的 AddStationController
AddStationController.h
@property (nonatomic, weak) mainView* delegate;
主视图:
- (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];
【讨论】:
我的朋友,我的 ScrollView 在 mainView 中,添加按钮是 rootView,取消按钮在 AddStationController 中!!!编写代码时出现此错误:libc++abi.dylib: terminating with uncaught exception of type NSException 如此奇怪的架构...无论如何,您应该在 AddStationController 中有对 MainView 实例的引用。 我不知道该怎么做,请用代码指导我 按下添加按钮会发生什么?你的 rootViewController 中有没有对 mainView 的引用? 阅读:prateekvjoshi.com/2014/02/16/…以上是关于如何更改 UIScrollView Xcode 的 ContentOffSet的主要内容,如果未能解决你的问题,请参考以下文章
Xcode:如何在 UIScrollView 中从 XIB 文件添加自定义视图