通过触摸UILabel打开另一个ViewController

时间:2014-11-25 10:30:19

标签: ios objective-c iphone touch

我有一个充满名字的ViewController,基本上是一个联系人列表。当您触摸其中一个名称时,您将看到一个包含信息的详细信息屏幕:名称,组织,建筑物,电话号码,电子邮件等。它使用导航控制器,因此您可以返回电话簿。

我的应用程序中有一个自定义地图(基本上是一张图片,有几个图层和一个图钉,可以显示你在图片上的位置)。我想实现这一点,当有人触摸建筑物UILabel时,我的MapViewController会带有一些参数。它是一个简单的UILabel,但包含有用的信息,如15 / A建筑物。我有建筑物的确切x,y坐标。

我的主要问题是我真的不知道如何在UILabel上设置触摸事件并使用参数转到新的视图控制器。

我想我需要在mapviewcontroller中创建新的启动方法,以便能够获取参数并显示它们。

总结一下:如何使用触摸事件导航到其他视图控制器,如何使用参数启动该视图控制器。重要的是,我可以从菜单中找到没有任何建筑物参数的地图。

任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:3)

或者,您也可以在标签上添加隐藏按钮。此按钮将处理触摸事件。

答案 1 :(得分:1)

使用点按手势

UITapGestureRecognizer * tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTapped)];

tapGestureRecognizer.numberOfTapsRequired = 1;

[myLabel addGestureRecognizer:tapGestureRecognizer];

myLabel.userInteractionEnabled = YES;

答案 2 :(得分:0)

//Create a Tap Gesture and set it on your Label. 

UILabel *yourLabel=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
[yourLabel setTextColor:[UIColor blackColor]];
[yourLabel setTextAlignment:NSTextAlignmentCenter];
[yourLabel setText:@"Address"];
[self.view addSubview:yourLabel];

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(TapGestureRecognizerLabel:)];
[tap setNumberOfTouchesRequired:1];
[yourLabel addGestureRecognizer:tap];

 -(void)TapGestureRecognizerLabel:(UIGestureRecognizer *)gestureRecognizer
{
    [self.navigationController pushViewController:targetControllerObj animated:YES];
}