从另一个视图控制器

问题描述:

设置UIScrollView的位置,我尝试使用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我预先设定。这里没关系;此外,它反正正确地通过。

试试这个,如果你想改变你必须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]; 
} 
+0

工程就像一个魅力! –

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

使用代表在视图控制器落后的消息。

请参阅Basic Delegate Example链接以获取更多参考。

您正在制作viewcontroller的新实例,它将调用方法,但不起作用。

+0

这似乎是答案,但我无法弄清楚如何设置委托。几个月前,我做了类似的事情,我记得它非常简单。我将UIView的委托设置为另一个视图控制器,然后只调用[delegate method:argument];等方法。但我不记得我是如何做到的,而且我不知道如何在这种情况下应用它。 –