2011-09-16 7 views
1

사실, 한 뷰에서 다른 뷰로 데이터를 푸시하고자합니다. 그 위에 이미지가있는 UIScrollView 있어요. 이제 내가 그 이미지보기를 터치 할 때마다 위치를 선택하고 다른보기로 위치를 옮기고 싶기 때문에 그 뷰에서 다른 뷰로 데이터를 밀어 넣고 싶습니다. UIScrollView에는 navigationController가 없으므로이를 밀어 올릴 수 없습니다.touchesBegan을 UIScrollView에서 UIViewController로 전달하는 방법

UIScrollView는 UIViewController 클래스 위에 있습니다. UIScrollView에서 UIViewController 클래스로 UITouch를 보내고 그 클래스가 뷰를 밀어 붙이도록하거나, 어떤 것을 해결해야만 할 수 있습니까?

나는있는 UIScrollView 클래스의 다음 코드

ImageScrollView.m

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
UITouch *t = [touches anyObject]; 
CGPoint touchInScrollView = [t locationInView:imageView]; 
NSLog(@"x: %f", floor(touchInScrollView.x)); 
NSLog(@"Y : %f", floor(touchInScrollView.y)); 

    /****Cant be done since pushViewController is not allowed in UIScrollView.****/ 

DetailViewController *newView = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
[self.navigationController pushViewController:newView animated:YES]; 

} 

답변

1

@property (nonatomic, retain) IBOutlet UIViewController* parentVC; 

가에 @implementation 후이 줄을 추가 ImageScrollView.h이 속성을 추가해야 ImageScrollView.m

당신이 작성하는 경우

imageScrollViewYouJustMade.parentVC = self; 

: 당신이 프로그래밍 방식 ImageScrollView를 만들 경우 뷰 컨트롤러에서 생성 후, ImageScrollView.m

[parentVC release]; 

에 (무효)의 dealloc 방법 -

당신이 줄을 추가 인터페이스 빌더의 ImageScrollView에서 parentVC 콘센트를 File 's Owner에 연결하십시오.

는 ImageScrollView.m에 새로운 뷰 컨트롤러를 밀어

[self.parentVC.navigationController pushViewController:newView animated:YES]; 

여기에 내가 응용 프로그램에 대한 자세한 내용을 모르고 확실히 말할 수

대안은, 그러나 일반적으로 나는이 있다면 당신이 버튼 프로그래밍을 작성하지 않는 경우 내가 오기로 원하는 이미지를 포함하는 스크롤 뷰는, 내가 대신있는 UIImageView의있는 UIButton을 사용하고

btnImage = [UIImage imageNamed:@"image.png"]; 
[btn setImage:btnImage forState:UIControlStateNormal]; 

과 같이 할 것 속성 관리자의 유형을 사용자 정의로 변경하고 배경 속성을 원하는 이미지로 변경하여 이미지를 배경으로 설정할 수도 있습니다.

- (IBAction)smileyFaceButtonTapped:(UIButton*)sender; 
: 이미지보기 대신 버튼을 사용하여

당신처럼 보일 수 있습니다 기본 뷰 컨트롤러에 IBAction를 메서드에 버튼의 터치 다운 콘센트에 연결 할 수 있습니다

관련 문제