无法在由自定义UIViewController控制的UILabel上设置文本

时间:2011-11-16 15:30:20

标签: ios mapkit mkannotationview

我有一个mapkit应用程序,我在其中创建了一个自定义的标注视图。我似乎无法让视图上的标签更新。这是我的设置:

我有一个名为VendorAnnotation的自定义注释类,它有5个字符串属性(电话和4个地址行)。 VendorAnnotation对象将其rightCalloutAccessoryView设置为UIButton。在委托方法中: `(void)mapView:(MKMapVIew *)mapView annotationView:(MKAnnotationView *)view calloutAccessroyControlTapped:(UIControl *)control{} 我通过注释属性访问5个字符串:
    VendorAnnotation v =(VendorAnnotation *)view.annotation; 然后我有:     DetailViewController *detailVC = [[DetailViewController alloc] initWithDetails:v.phone add1:v.add1 add2:v.add2 add3:v.add3 add4:v.add4]; 我知道,通过单步执行,这些字符串属性(v。*)具有准确的值。 问题是,这个initWithDetails方法没有设置标签文本。这是我的DetailViewController类的代码:

DetailViewController.h:

@interface DetailViewController : UIViewController
{
  IBOutlet UILabel *_phone;
  IBOutlet UILabel *_add1;
  IBOutlet UILabel *_add2;
  IBOutlet UILabel *_add3;
  IBOutlet UILabel *_add4;
}


- (id)initWithDetails:(NSString *)p add1:(NSString *)a add2:(NSString *)aa add3:(NSString *)aaa add4:(NSString *)aaaa;
@end

DetailViewController.m:

#import "DetailViewController.h"

@implementation DetailViewController


- (id)initWithDetails:(NSString *)p add1:(NSString *)a add2:(NSString *)aa add3:(NSString *)aaa add4:(NSString *)aaaa

{
  self = [super init];
  if (self) {
    [_phone setText:p];
    [_add1 setText:a];
    [_add2 setText:aa];
    [_add3 setText:aaa];
    [_add4 setText:aaaa];
  }
  return self;
}

我不知道为什么,但标签的text属性永远不会被设置为适当的字符串。请帮忙。我知道这是愚蠢的,我是客观C和iOS编程的新手,但我没有看到问题。我应该提一下,我已将IB中的.xib上的标签连接到相应的IBOutlet属性。

2 个答案:

答案 0 :(得分:1)

可能因为“p”,“a”,“aa”......未启动......

- (void)viewDidLoad而不是init。

上试试

或者不使用:

detailVC = [[DetailViewController alloc] initWithDetails:v.phone add1:v.add1 add2:v.add2 add3:v.add3 add4:v.add4]; 

为什么不使用自定义init方法,然后执行以下操作:

detailVC.YOUR_LABEL.text = @"Your TEXT";

detailVC.YOUR_LABEL.text = v.add1;

答案 1 :(得分:0)

您的自定义初始化程序中的出口i-vars无效。这就是为什么没有设置值的原因。