Проблема с отображением / скрытием представлений (программирование Obj-C для iPhone)

Хорошо все,

So I've got a UITableView that is inited in applicationDidFinishLaunching like so: [self showForumList]; Said method does this:

-(void)showForumList {
    ForumList *fl = [ForumList alloc];
    [fl initWithNibName:@"ForumList" bundle:[NSBundle mainBundle]];
    self.ForumList = fl;
    [window addSubview:[self.ForumList view]];
    [fl release];
}
where self.ForumList is previously defined in the interface as ForumList *ForumList;, etc.

Теперь, в ForumList (который, очевидно, является расширением UITableViewController), у меня есть didSelectRowAtIndexPath: - в нем у меня есть следующий код:

   Forum *f = [Forum alloc];
    NSArray *forums = [f getForumList];

    NSDictionary *selectedForum = [forums objectAtIndex:[indexPath row]];

    NSString *Url = [selectedForum objectForKey:@"url"];
    NSString *Username = [selectedForum objectForKey:@"username"];
    NSString *Password = [selectedForum objectForKey:@"password"];

    NSLog(@"Identified press on forum %@ (%@/%@)", Url, Username, Password);

    [self.globalDelegate showForumListFromForumUsingUrl:Url username:Username password:Password];
    [self.globalDelegate closeForumList];
    NSLog(@"ForumListFromForum init");

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

self.globalDelegate определяется как AppDelegate *globalDelegate; в спецификации интерфейса в моем файле заголовка. Однако [self.globalDelegate showForumListFromForumUsingUrl:username:password] и [self.globalDelegate closeForumList] никогда не вызываются. Выглядят они так:

-(void)closeForumList {
    NSLog(@"Hiding forum list");
    [[self.ForumList view] removeFromSuperview];
}

-(void)showForumListFromForumUsingUrl:(NSString *)Url username:(NSString *)Username password:(NSString *)Password {
    NSLog(@"Showing forum list from forum");
    ForumListFromForum *fl = [ForumListFromForum alloc];

    [fl initWithNibName:@"ForumListFromForum" bundle:[NSBundle mainBundle]];
    [fl initFromForumWithUrl:Url username:Username password:Password];

    self.ForumListFromForum = fl;
    [window addSubview:[self.ForumListFromForum view]];
    [fl release];
}

Приложение реагирует на мои нажатия, но ни один из этих вызовов NSLog не выполняется, предположительно из-за того, что вызовы метода в appDelegate не работают.

Есть идеи, где я ошибся?


person roswell    schedule 04.04.2010    source источник


Ответы (1)


Я не вижу строки, где self.globalDelegate выделен и инициализирован. Может, в этом причина.

Более того, проверьте (в отладчике), что в этих строках:

[self.globalDelegate showForumListFromForumUsingUrl:Url username:Username password:Password];
[self.globalDelegate closeForumList];

self.globalDelegate не равен нулю. Как вы должны помнить - сообщения до nil воспринимаются как правильные, но ничего не происходит.

person kpower    schedule 05.04.2010
comment
self.globalDelegate определен в файле заголовка как таковой (для ясности включен весь текст) (отредактируйте, так как здесь я не могу использовать pre, см. pastebin.com/h6DKyHZJ) При этом self.globalDelegate показывает значение 0x0 в отладчике - я полагаю, я не инициализирую его должным образом, как вы посоветуете мне это сделать? - person roswell; 05.04.2010
comment
Я только что понял, что мой класс AppDelegate на самом деле называется mobilebbAppDelegate ... возможно, мне следует вместо этого создать экземпляр mobilebbAppDelegate * globalDelegate? Однако попытка сделать это приводит к тому, что компилятор выдает несколько ошибок ... - person roswell; 05.04.2010