Инициализация Представления Детали от пера с параметрами, переданными от Корневого Представления

Я, имеют представление карты со многими аннотациями на него..., после того как выноска нажата, я должен передать несколько параметров DetailViewController, таким образом, я пытался сделать это через конструктора. Я отладил немного и обнаружил, что аргументы передаются правильно и получаются как ожидалось в конструкторе, но по некоторым причинам каждый раз, когда я пытаюсь изменить значения IBOutlets, я расположил в перо, он никогда не имеет эффект.

Вот то, что я передаю (btw, я не получаю "initWithNibName: пакет: заголовок' метод, найденный", предупреждая в этой строке):

DetailViewController *dvc = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil header:headerText];

[self.navigationController pushViewController:dvc animated:YES];

Теперь вот мой конструктор:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil header:(UILabel*)headerLabel {
 if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
     self.headerTextView = headerLabel;
     NSLog(@"header:%@", headerLabel.text);
 }
 return self;
 }

Еще раз проблема состоит в том, что headerLabel.text печатается правильно в консоли, но строке self.headerTextView = headerLabel; кажется, не делает то, что я хочу, чтобы это сделало.

Спасибо! править:

Заголовок DetailViewController:

#import <UIKit/UIKit.h>
#import "Truck.h"

@interface DetailViewController : UIViewController
{
    IBOutlet UITextView *informationTextView;
    IBOutlet UIImageView *imageView;
    IBOutlet UIWebView *twitterFeedView;
    IBOutlet UILabel *headerTextView;
    NSString *imageURL;
    }

@property (nonatomic, retain) NSString *imageURL;
@property (nonatomic, retain) UILabel *headerTextView;
@property (nonatomic, retain) UITextView *informationTextView;
@property (nonatomic, retain) UIImageView *imageView;
@property (nonatomic, retain) UIWebView *twitterFeedView;

-(DetailViewController*)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil header:(UILabel*)headerLabel;

@end

соответствующая реализация DetailViewController:

@synthesize imageView, informationTextView, twitterFeedView, headerTextView, imageURL;

 // The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil header:(UILabel*)headerLabel {
 if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
     self.headerTextView = headerLabel;
     NSLog(@"r%@", headerLabel.text);
 }
 return self;
 }
1
задан D-Nice 13 June 2010 в 22:14
поделиться

2 ответа

Вот как я заставил его работать:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil header:(NSString*)headerString {
 if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
     NSLog(@"test1:%@", self.headerTextView.text);
     self.headerTextView=[[UILabel alloc] init];
     [self.headerTextView setText:headerString];
     NSLog(@"test2:%@", self.headerTextView.text);
     globalHeaderText=headerString;
 }
 return self;
 }


- (void) viewDidLoad
{   
    [super viewDidLoad];
    NSLog(@"label.text upon creation:%@", self.headerTextView.text);
    [self.headerTextView setText:globalHeaderText];
}

Вот результаты журнала:

2010-06-13 22:31:21.591 MyApp[29141:207] test1:(null)
2010-06-13 22:31:21.592 MyAppn[29141:207] test2:mandolinegrill
2010-06-13 22:31:21.600 MyApp[29141:207] label.text upon creation:Label

Другими словами, [self.headerTextView setText: globalHeaderText]; ДЕЙСТВИТЕЛЬНО работает в viewDidLoad, но не работает в initWithNibName. Кто-нибудь знает, как я могу решить эту проблему?

1
ответ дан 2 September 2019 в 23:47
поделиться

Чтобы избавиться от предупреждения, убедитесь, что вы определили метод в заголовочном файле. Что касается следующего, я не совсем уверен, чего вы хотите достичь с помощью self.headerTextView = headerLabel; Как вы определили свойство headertextview? Вы можете дать нам код собственности? Вы его @ синтезировали? Фактически, это могло бы помочь, если бы мы могли видеть весь файл заголовка.

1
ответ дан 2 September 2019 в 23:47
поделиться