- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我添加了annotaion pin point to my application ,当用户单击图钉时,会出现带有蓝色箭头的弹出窗口 (UIButtonTypeDetailDisclosure
)。现在我想做的是,当用户单击它时,我需要将 View 重定向到另一个 View ,并提供更多详细信息。
例如:如果我点击的是一家医院,弹出窗口将给出其名称和 UIButtonTypeDetailDisclosure
按钮。当我单击 UIButtonTypeDetailDisclosure
按钮时,我应该重定向到另一个 View ,其中提供有关该医院的更多信息。
我的代码:
-(void)callingMap:(NSArray *)hospitalArray {
for(Hospital *hospital in hospitalArray)
{
MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } };
region.center.latitude = hospital.lati;
region.center.longitude = hospital.longi;
[self.mapView setRegion:region animated:YES];
DetailMap *hospitalInfo = [[DetailMap alloc] init];
hospitalInfo.title = [hospital name];
hospitalInfo.subtitle = [hospital address];
hospitalInfo.coordinate = region.center;
[self.mapView addAnnotation:hospitalInfo];
}
}
}
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
(id <MKAnnotation>)annotation {
MKAnnotationView* ann = nil;
if(annotation != mapView.userLocation)
{
ann = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"try"];
ann.canShowCallout = YES;
ann.image = [UIImage imageNamed:@"arrow.png"];
UIButton* butt = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[butt addTarget:self action:@selector(displayArrow:) forControlEvents:
UIControlEventTouchUpInside];
ann.rightCalloutAccessoryView = butt;
}
return ann;
}
-(void)displayArrow:(id)sender{
MoreHospitalDetailViewController *mhdvc = [[MoreHospitalDetailViewController alloc] initWithNibName:nil bundle:nil];
mhdvc.hospitalArray = ????????
// in the MoreHospitalDetailViewController i have an Array called hospitalArray. I need to insert the selected hospital object (after clicking the particular arrow) to this array and pass it to the next view. How to do it ? //
[self.navigationController pushViewController:mhdvc animated:YES];
}
在 MoreHospitalDetailViewController
中,我有一个名为 hospitalArray
的数组。我需要将选定的医院对象(单击特定箭头后)插入到该数组中并将其传递到下一个 View 。怎么做?
注意: map 中可以有很多项目(注释),那么当我在 (void)displayArrow:(id)sender
方法中时,如何知道我单击了哪个医院对象?
救救我,我迷路了
最佳答案
在 displayArrow:
方法,您可以使用以下方法获取对单击的注释的引用:
DetailMap *hospitalInfo
= (DetailMap *)[mapView.selectedAnnotations objectAtIndex:0];
请注意,您还可以使用 map View 的 calloutAccessoryControlTapped
委托(delegate)方法而不是addTarget
并编写自定义方法。例如:
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view
calloutAccessoryControlTapped:(UIControl *)control
{
DetailMap *hospitalInfo = (DetailMap *)view.annotation;
//do something with the annotation...
}
<小时/>您有两个类(class):
Hospital
其中包含医院的完整详细信息,包括电话号码等。DetailMap
它实现了 MKAnnotation
仅包含医院的坐标、名称和地址(但不包含电话# 或其他任何信息)点击注释的标注按钮时,您希望访问完整的医院信息(而不仅仅是坐标、名称和地址)。
首先,当您在注释中说“DetailMap 仅包含 2 条记录”时,您实际上指的是“字段”或“属性”而不是“记录”(每个医院对象都是一个“记录”)。
以下是解决此问题的几种方法:
在 DetailMap
,添加一个名为 hospital
的属性类型 Hospital
并在创建DetailMap
时设置callingMap
中的对象方法(hospitalInfo.hospital = hospital
)。然后在 displayArrow:
方法,您可以将该属性添加到数组 ( mhdvc.hospitalArray = [NSArray arrayWithObject:hospitalInfo.hospital];
)。
更改 Hospital
类,以便它实现 MKAnnotation
本身并消除 DetailMap
完全上课。然后就可以直接传 Hospital
反对 addAnnotation
并在 displayArrow:
你可以这样做的方法:
Hospital *hospital = (Hospital *)[mapView.selectedAnnotations objectAtIndex:0];
mhdvc.hospitalArray = [NSArray arrayWithObject:hospital];
第一个选项更容易,因为您已经创建了 DetailMap
类,但第二个更干净。
不过,MoreHospitalDetailViewController
不需要数组来传递单个医院对象(包含多个字段)。你可以只声明 Hospital *hospital
属性(property) MoreHospitalDetailViewController
传递单个对象。
关于iphone - 添加 UIButtonTypeDetailDisclosure - 逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9114580/
是否可以将 UIButtonTypeDetailDisclose 的图像从默认图像更改为更有趣的图像。但是,请注意,我要求的是按钮,而不是一种类型的 uibutton。 最佳答案 您必须更改单元格的a
我已将 UIButtonTypeDetailDisclosure 的图像更改为下图,但问题是图像变成了蓝色。我的问题在哪里? - (MKAnnotationView *)mapView:(MKMapV
我添加了annotaion pin point to my application ,当用户单击图钉时,会出现带有蓝色箭头的弹出窗口 (UIButtonTypeDetailDisclosure)。现在
我有一个自定义按钮类: CustomButton.h 文件: @interface CustomButton : UIButton @property (nonatomic, retain) NSSt
我正在尝试将 UIButtonTypeDetailDisclosure 添加到 View 的底部栏。 应用程序构建成功,但在运行时出现以下错误: *** Terminating app due to
我想在单击注释的详细信息按钮时进行详细 View 。但是每个引脚必须有不同的细节 View 。为此,我尝试将标签设置为按钮。然后我将在 calloutAccessoryControlTapped 方法
我是一名优秀的程序员,十分优秀!