2

contentOffset を次のように使用して、UIScrollView の位置を設定しようとしています。

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

このメソッドを閉じる前に別のView Controllerから呼び出すと、すべてがチェックアウトされます。引数を正しく渡し、メソッドが呼び出されます(NSLogで確認)が、スクロールビューが移動しません...

面白いのは、このメソッドが配置されているView Controllerからこのメソッドを呼び出すと、正常に機能することです。別のView Controllerから呼び出した場合にのみ、動作が停止します。

今後の参考のために、呼び出し方法を次に示します。

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

ビュー コントローラーでの逆方向メッセージにはデリゲートを使用します。

詳細については、基本的なデリゲートの例のリンクを参照してください。

メソッドを呼び出すビューコントローラーの新しいインスタンスを作成していますが、効果はありません。

于 2012-12-26T10:57:36.967 に答える