2

에서있는 UIScrollView의 위치를 ​​설정. 인수를 올바르게 전달하고 메서드가 호출되면 (NSLog로 체크) 스크롤 뷰가 이동하지 않습니다 ...나는 같은 contentOffset를 사용하여있는 UIScrollView의 위치를 ​​설정하려고 또 다른의 ViewController

재미있는 점은 뷰 컨트롤러에서이 메서드를 호출하면 그것이 잘 작동합니다. 다른보기 컨트롤러에서 호출 할 때만 작업이 중지됩니다.

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

내용 오프셋 나는 미리 설정 CGPoint된다

그냥 나중에 참조 할 수 있도록, 여기에 호출하는 방법입니다. 여기에 상관 없습니다. 게다가, 그것은 어쨌든 정확하게 전달된다.

답변

2

뷰 컨트롤러에서 뒤로 메시징

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

대표사용

-(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

매력처럼 작동합니다! –

0

표시되지 않는보기의 속성을 설정할 수 없습니다. iOS5 +를 사용하는 경우보기 해제 완료 블록에서 완료시 오프셋 설정을 구현할 수 있습니다.

0

mainviewcontroller에 .. 변경할 때 다른 viewcontroller에서 send notification에있는이보십시오.

자세한 내용은 Basic Delegate Example 링크를 참조하십시오.

당신은 메서드를 호출하지만 아무런 효과가없는 viewcontroller의 새로운 인스턴스를 만들고 있습니다.

+0

그 대답을하는 것 같지만 대리인을 설정하는 방법을 알아낼 수 없습니다. 두어 달 전에 나는 비슷한 것을했고 매우 간단하다는 것을 기억합니다. 다른 뷰 컨트롤러에 UIView의 위임을 설정 한 다음 [위임 메서드 : 인수]와 같은 메서드를 호출했습니다. 그러나 나는 내가 어떻게했는지 기억하지 못한다. 나는이 상황에서 그것을 어떻게 적용해야할지 모른다. –

관련 문제