как изменить ContentOffSet из UIScrollView Xcode

Я создаю один 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!!!


person user3797431    schedule 12.07.2014    source источник


Ответы (2)


Я думаю, ваша проблема в том, что вы не добавили метод ChangeMainScrollContentOffset в свой файл ViewController.h.

Просто добавьте его в файл ViewController.h и вызовите его.

person iBhavin    schedule 12.07.2014
comment
мой друг, я добавляю этот метод в mainView - person user3797431; 12.07.2014

Второй viewController должен иметь ссылку на предыдущий контроллер представления.

Когда вы делаете это:

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

Вы создаете еще один экземпляр mainView, которого нет на экране, и меняете contentOffset на ДРУГОЙ scrollView :)

Вы должны добавить делегат свойства в свой 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];
}
person Igor    schedule 12.07.2014
comment
мой друг, мой ScrollView находится в mainView, а кнопка добавления - rootView, а кнопка отмены находится в AddStationController !!! когда пишу ваш код, я получаю эту ошибку: libc++abi.dylib: завершение с необработанным исключением типа NSException - person user3797431; 12.07.2014
comment
Такая странная архитектура... В любом случае, у вас должна быть ссылка в AddStationController на ваш экземпляр MainView. - person Igor; 12.07.2014
comment
Я не знаю, как это сделать, пожалуйста, направьте меня с кодом - person user3797431; 12.07.2014
comment
Что происходит, когда вы нажимаете кнопку добавления? У вас есть ссылка на mainView в вашем rootViewController? - person Igor; 12.07.2014
comment
Прочтите это: prateekvjoshi.com/2014/ 16/02/ - person Igor; 12.07.2014