Загрузка словаря из заголовка панели навигации - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть mainViewController, который выдвигает detailViewController на экран.Элементы (изображения, заголовок панели навигации, текстовое представление и кнопка) в detailViewController все загружаются из NSMutableDictionary в MainViewController в зависимости от того, какое изображение в нем коснулось.

У меня также есть кнопка в detailViewController, которая при выборе загружает вид карты, который показывает местоположение пользователя.Когда пользователь нажимает кнопку, пин-код сбрасывается, отмечая это место заголовком выноски аннотации.

Я хочу, чтобы заголовок карты и заголовок аннотации были такими же, как заголовок detailViewController, который загружается из NSMutableDictionary MainViewController.

Прямо сейчас я пытаюсь использовать заголовок detailViewController в качествеопределяющий фактор в заголовке карты и заголовке аннотации.Однако это не работает.

Вот мой код в MainViewController .m.

- (void) coverflowView:(TKCoverflowView*)coverflowView coverAtIndexWasDoubleTapped:(int)index{

    SomeDetailViewController *detailViewController = [[SomeDetailViewController alloc] initWithNibName:@"SomeDetailViewController" bundle:nil];

    if ((int)index == 0) {
        NSMutableDictionary *myDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                        @"0002.jpg", @"imagekey",
                        @"This is tree 0002", @"textkey", 
                        @"0002.image.png",@"imagekey2",
                        @"0002 title", @"headerkey",
                        @"www.0003.com", @"address",nil];

        NSLog(@"%@", [myDictionary objectForKey:@"imagekey"]);
        NSLog(@"%@", [myDictionary objectForKey:@"textkey"]);
        NSLog(@"%@", [myDictionary objectForKey:@"imagekey2"]);
        NSLog(@"%@", [myDictionary objectForKey:@"address"]);
        NSLog(@"%@", [myDictionary objectForKey:@"headerkey"]);
         detailViewController.myDictionary = myDictionary;
    }

    else if ((int)index == 1) {
        NSMutableDictionary *myDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                             @"0003.jpg", @"imagekey",
                                             @"This is 0003", @"textkey", 
                                             @"0003.image.png",@"imagekey2",
                                             @"0003 title", @"headerkey",
                                             @"www.0003.com", @"address",nil];

        NSLog(@"%@", [myDictionary objectForKey:@"imagekey"]);
        NSLog(@"%@", [myDictionary objectForKey:@"textkey"]);
        NSLog(@"%@", [myDictionary objectForKey:@"imagekey2"]);
        NSLog(@"%@", [myDictionary objectForKey:@"address"]);
        NSLog(@"%@", [myDictionary objectForKey:@"headerkey"]);
        detailViewController.myDictionary = myDictionary;
    }

    [self.navigationController pushViewController:detailViewController animated:YES];
}

Вот мой код в detailViewController.m.Это загружает строки моего словаря (жирным шрифтом загружается заголовок панели навигации).

- (void)viewDidLoad {
    NSString *filePath =[self pathOfFile];
    if ([[NSFileManager defaultManager]fileExistsAtPath:filePath]){
        NSArray *array = [[NSArray alloc]initWithContentsOfFile:filePath];
        myText.text = [array objectAtIndex:0];
    }

    UIApplication *app = [UIApplication sharedApplication];
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification object:app];
    [super viewDidLoad];

    imageView .image = [[UIImage alloc] init];
    self.imageView.image =[UIImage imageNamed:[(NSMutableDictionary *)myDictionary objectForKey:@"imagekey"]];

    imageView2 .image = [[UIImage alloc] init];
    self.imageView2.image =[UIImage imageNamed:[(NSMutableDictionary *)myDictionary objectForKey:@"imagekey2"]];

    self.myText.text =[(NSMutableDictionary *)myDictionary objectForKey:@"textkey"];

    **self.navigationItem.title = [(NSMutableDictionary *)myDictionary objectForKey:@"headerkey"];**
    NSLog(@"%@", [myDictionary objectForKey:@"imagekey"]);
    NSLog(@"%@", [myDictionary objectForKey:@"imagekey2"]);
    NSLog(@"%@", [myDictionary objectForKey:@"textkey"]);
    NSLog(@"%@", [myDictionary objectForKey:@"headerkey"]);
}

Здесь я пытаюсь загрузить заголовок панели навигации и заголовок аннотации, используя текущий заголовок панели навигации в качестве определяющегофактор.Это единственное, что я могу использовать, так как нет стабильного элемента.Все в detailViewController загружается из MainViewController NSDictionary.

 -(IBAction)pushMap:(id) sender{

    SomePositionViewController *somePosition = [[SomePositionViewController alloc] init]; 


    if ((self.navigationItem.title = @"0002 title")) {
        NSMutableDictionary *mapDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                              @"0002a title", @"headerkey2",
                                             @"0002 annotation title", @"titlekey",nil];
        treePosition.mapDictionary = mapDictionary;
        NSLog(@"%@", [mapDictionary objectForKey:@"titlekey"]);
        NSLog(@"%@", [mapDictionary objectForKey:@"headerkey2"]);
    }

   else if((self.navigationItem.title = @"0003 title")) {
        NSMutableDictionary *mapDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                              @"0003a title", @"headerkey2",
                                              @"0003 annotation title", @"titlekey",nil];
        treePosition.mapDictionary = mapDictionary;
        NSLog(@"%@", [mapDictionary objectForKey:@"titlekey"]);
       NSLog(@"%@", [mapDictionary objectForKey:@"headerkey2"]);
    }

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

                                                }

У кого-нибудь есть идеи, как мне это сделать?Я ломал голову, но безрезультатно.ПОМОГИТЕ!

1 Ответ

0 голосов
/ 21 февраля 2012

Одна вещь, которую я заметил, это то, что вы сравниваете строки неправильно.Вы используете

if ((self.navigationItem.title = @"0002 title"))

, но должны использовать

if (([self.navigationItem.title isEqualToString:@"0002 title"]))

Сравнение строк на вашем пути всегда будет неудачным.

...