2

我正在尝试通过使用 contentOffset 来设置 UIScrollView 的位置:

- (void) navigateToTableViewPosition:(CGPoint)contentOffset {
    NSLog(@"Position set method gets called...");
    NSLog(@"%@", NSStringFromCGPoint(contentOffset));
    [mainScrollView setContentOffset:contentOffset animated:YES];
}

在我关闭它之前,我从另一个视图控制器调用这个方法,一切都检查出来了。我正确传递了参数,并调用了该方法(使用 NSLog 检查),但滚动视图没有移动......

有趣的是,当我从它所在的视图控制器调用此方法时,它工作正常。只有当我从另一个视图控制器调用它时,它才会停止工作。

仅供参考,这里是调用方法:

MainViewController *mainView = [[MainViewController alloc] init];
[mainView navigateToTableViewPosition:contentOffset];

内容偏移量是我预先设置的 CGPoint。在这里没关系;此外,无论如何它都会正确传递。

4

3 回答 3

2

试试这个,当你想改变时,你必须send notification从其他人那里改变..viewcontroller

    [[NSNotificationCenter defaultCenter] postNotificationName:@"changepostion"        object:NSStringFromCGPoint(CGPointMake(contentOffset.x, contentOffset.y))];

mainviewcontroller

  -(void)viewDidLoad

  {
     [[NSNotificationCenter defaultCenter] removeObserver:self];
         [[NSNotificationCenter defaultCenter] addObserver:self    selector:@selector(navigateToTableViewPosition:) name:@"changepostion" object:nil];

  }

- (void) navigateToTableViewPosition:(NSNotification *)notification
  {
        contentOffset =CGPointFromString([notification object]);

   NSLog(@"Position set method gets called...");
   NSLog(@"%@", NSStringFromCGPoint(contentOffset));
    [mainScrollView setContentOffset:contentOffset animated:YES];
 }
于 2012-12-26T10:57:05.230 回答
1

您不能设置不可见视图的属性。如果您使用的是 iOS5+,您可以在视图关闭完成块的完成中实现偏移设置。

于 2012-12-26T10:50:55.373 回答
0

在视图控制器中使用委托进行反向消息传递。

有关更多参考,请参阅Basic Delegate Example链接。

您正在制作 viewcontroller 的新实例,该实例将调用方法但没有任何效果。

于 2012-12-26T10:57:36.967 回答