Невозможно установить текст в UILabel, управляемой пользовательским UIViewController - PullRequest
2 голосов
/ 16 ноября 2011

У меня есть приложение 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, но не вижу проблемы. Вероятно, я должен упомянуть, что я связал метки на .xib в IB с соответствующими свойствами IBOutlet.

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

возможно, потому что "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;
0 голосов
/ 16 ноября 2011

Ваши выходные i-vars равны нулю внутри вашего пользовательского инициализатора.Вот почему значения не установлены.

...