Назначьте IBOutlet из переменной appDelegate в массиве в контроллере представления - PullRequest
0 голосов
/ 04 декабря 2009

У меня есть то, что кажется простым, но я просто не могу заставить его работать. У меня есть переменная, входящая в ViewController (представленный модальным представлением) и в viewController я получаю доступ к appDelelgate, чтобы получить переменную в переданном NSArray. Я могу убедиться, что переменная доступна в моем NSLog, непосредственно перед тем, как запутать ее назначение, поэтому я знаю, что она там есть. в файле .h есть следующее;

@class ViolinMakerAppDelegate;


@interface DetailsViewController : UIViewController
{

    ViolinMakerAppDelegate *dappDelegate;
 DetailsViewController *detailsView;


 IBOutlet UIViewController *modalViewController; 
 IBOutlet UITextView *violinMakerDescription;

}

@property (retain, nonatomic) ViolinMakerAppDelegate *dappDelegate;

@property (nonatomic, retain) DetailsViewController *detailsView; 
@property(nonatomic, assign) UIViewController *modalViewController;

@property (nonatomic, retain) IBOutlet UITextView *violinMakerDescription;

В файле .m есть следующее.

    #import "DetailsViewController.h"
    #import "ViolinMakerAppDelegate.h"

    @implementation DetailsViewController
    @synthesize detailsView, violinMakerDescription, dappDelegate;
        - (void)viewWillAppear:(BOOL)animated
        { 

         dappDelegate = (ViolinMakerAppDelegate *) [[UIApplication sharedApplication] delegate];
         DetailsViewController *detailsViewController = [[DetailsViewController alloc]initWithNibName:@"DetailsViewController" bundle:nil];
         self.detailsView = detailsViewController;
    // Tried below, but the variable is not getting to the IBOutlet..     
    NSString *aviolinMakerDescription = [dappDelegate.violinMakers description];
    [self.detailsView.violinMakerDescription setText:aviolinMakerDescription];

NSLog(@"violinMakerDescription: %@", [dappDelegate.violinMakers description]);

         // tried -----> [self.detailsView.violinMakerDescription setText:[dappDelegate.violinMakers description]];

        }

Я уверен, что это довольно просто, поскольку я знаю, что переменная 'description' содержит то, что я хочу. Я просто продолжаю получать только статический текст в IB. Я уверен, что IB подключен правильно, так как он работает аналогично RootViewController, выдвигающему другое представление, и все соединения одинаковы и очень просты. Одна розетка IB, одна UITextView.

Это звучит безумно для меня, но есть ли причина, по которой это представление находится в модальном представлении, что оно не может загружать переменные в текстовые поля, а только отправлять переменные обратно в программу из модального контроллера?

Кому-нибудь нравится помогать мне пройти через мой плотный череп, чего мне не хватает в этом окончательном коде, чтобы назначить его в IBOutlet ?? Заранее спасибо, Кирк

@ Скотт Я перепробовал все, и подумал, что это было то, что было нужно ... на самом деле не уверен. Здесь я представляю модально DetailsViewController из другого представления, которое выдвигается корневым контроллером.

case 0: 
        {
            DetailsViewController *detailsViewController = [[DetailsViewController alloc] initWithNibName:@"DetailsViewController" bundle:nil];
            UINavigationController *aDetailsViewController = [[UINavigationController alloc] initWithRootViewController:detailsViewController];
            self.detailsView = detailsViewController;           

            // °°°[self.view addSubview:detailsViewController.view];
            // self.violinMakerView = violinMakerViewController;
            // [[self navigationController] pushViewController:detailsViewController animated:YES];



            dappDelegate = (ViolinMakerAppDelegate *) [[UIApplication sharedApplication] delegate];
            // This does show the variable is loaded here too.
            NSLog(@"violinMakerDescription from Details Segment: %@", [dappDelegate.violinMakers description]);
            // attempting to load it here as well rem out doesn't change things
            [violinMakerDescription setText:[dappDelegate.violinMakers description]];

            // NSLog(@"violinMakerDescription loaded in segment Segment: %@", violinMakerDescription);


            [self presentModalViewController:aDetailsViewController animated:YES];


            [violinMakerView release];
            [detailsViewController release];
            [aDetailsViewController release];

            break;

Я действительно не знаю, что мне нужно в DetailsViewController в тексте выше, чтобы заставить его загружать переменную .... Надеюсь, это имеет смысл для вас. Спасибо за все, что вы можете помочь или пролить свет!

1 Ответ

1 голос
/ 04 декабря 2009

Является ли в вашей реализации DetailsViewController модальным контроллером для представления? Если это так, я не понимаю необходимость следующего кода:

DetailsViewController *detailsViewController = [[DetailsViewController alloc]initWithNibName:@"DetailsViewController" bundle:nil];
self.detailsView = detailsViewController;

Кажется, вы загружаете другой вид и присваиваете ему описание, а не отображаете его в том же виде. Я не уверен, каким образом у вас есть код для загрузки вида модели, поэтому кажется, что вы можете попробовать следующее в viewWillAppear: (BOOL):

[violinMakerDescription setText:[dappDelegate.violinMakers description]];

Это установит описание вашего текущего представления и должно быть всем, что вам нужно, если я что-то упустил.

...