2011-09-16 49 views
1

实际上,我想将数据从一个视图推送到另一个视图。我有一个UIScrollView,它上面有图像。现在我想将数据从该视图推送到其他视图,因为每当我触摸该图像视图时,我想选择位置并将位置推送到其他视图。 UIScrollView没有navigationController,无法推送它。如何将touchesBegin从UIScrollView传递给UIViewController

UIScrollView位于UIViewController类之上。有没有办法将UITouch从UIScrollView发送到UIViewController类,并让该类推送视图,还是必须解决某些问题。

我有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

添加此属性ImageScrollView.h

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

@implementation后添加此行ImageScrollView.m

@synthesize parentVC; 

此行添加到您的 - (空)dealloc方法在ImageScrollView.m

[parentVC release]; 

如果以编程方式创建ImageScrollView,创建后您的视图控制器:

imageScrollViewYouJustMade.parentVC = self; 

如果创建在Interface Builder中使用ImageScrollView,将父VC出口连接到File's Owner。

要推新视图控制器,在ImageScrollView.m

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

这里有一个替代方案,

我不能没有更多地了解你的应用程序肯定地说,但总的来说,如果我有含,我想挖掘图像的滚动视图,我会用一个UIButton代替的UIImageView,并完成类似

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

如果没有创建按钮编程的,从逻辑上讲,您还可以通过将“属性”检查器中的“类型”更改为“自定义”来将图像设置为背景,并将“背景”属性更改为所需的图像。

使用按钮而不是图像视图会允许你在按钮的着陆出口连接到您的主视图控制器的IBAction为方法可能看上去像:

- (IBAction)smileyFaceButtonTapped:(UIButton*)sender; 
相关问题