UIButtonTypeInfoLight类型的自定义按钮

时间:2012-11-08 10:22:43

标签: ios uibutton selector mkannotationview

我创建了一个CustomButton,为什么我需要在@selector中作为参数传递。自定义按钮是annotationView的一部分。在CustomButton我把属性UIButtonType,但在输出中没有出现。输出是一个没有任何东西的按钮,当我想要打开视图控制器时,当我在内部触摸时,注释会消失。

这是CustomButton.h中的代码

@interface CustomButton : UIButton{

}

@property (nonatomic, strong)NSString * name;
@property (nonatomic, assign)UIButtonType  typeButton;
@end
CustomButton.m中的

@implementation CustomButton.h

@synthesize name;
@synthesize buttonType;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

         self.typeButton = UIButtonTypeInfoLight;

    }
return self;
}
MapViewController.m中的

 -(void)loadDetailListViewController: (CustomButton *)aName{ 

             //I want to open a viewController 
             //.......
  }

 - (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id 
 <MKAnnotation>)annotation
  {
       //.......  

       MKPinAnnotationView *annotationView = (MKPinAnnotationView*) [mapView 
                dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];


       annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation
                                                  reuseIdentifier:AnnotationIdentifier];

     //.........

     CustomButton *rightButton = [CustomButton buttonWithType:UIButtonTypeCustom];
     [rightButton setName:[NSString stringWithFormat:@"%@", self.nameTable]];

     [rightButton addTarget:self action: @selector(loadDetailListViewController:) 
                                forControlEvents:UIControlEventTouchUpInside];

     annotationView.rightCalloutAccessoryView = rightButton;
     annotationView.canShowCallout = YES;
     annotationView.draggable = YES;
     return annotationView;
   }

为什么当我在注释内部修饰消失?

1 个答案:

答案 0 :(得分:1)

请按照文档说明进行操作:

  

buttonWithType:创建并返回指定的新按钮   类型。

     
      
  • (id)buttonWithType:(UIButtonType)buttonType
  •   
     

参数

     

buttonType按钮类型。有关可能的值,请参阅UIButtonType。

     

返回值

     

新创建的按钮。

     

讨论此方法是用于创建的便利构造函数   具有特定配置的按钮对象。 它是UIButton的子类,    此方法不返回子类的实例。如果你想要    要创建特定子类的实例,必须分配/初始化    直接按钮。

     

创建自定义按钮时 - 即具有该类型的按钮   UIButtonTypeCustom - 按钮的框架设置为(0,0,0,0)   原来。在将按钮添加到界面之前,您应该这样做   将帧更新为更合适的值。

当您在UIButtonTypeCustom使用buttonWithType:时,您的代码会以某种方式运作,如果有人更改了错误,就会发生错误(例如UIButtonTypeRoundedRect)。

由于您未在代码中的任何位置使用CustomButton -initWithFrame:但提供了它的实现,我建议您希望将其用作所需的初始化程序,这很好。