Почему я не могу перенести viewcontroller на следующий viewcontroller? - PullRequest
0 голосов
/ 20 апреля 2011

Я работаю над сокетами в target-c, поэтому я написал функцию для получения ответа от сервера, когда мое условие сбывается, я хочу нажать на контроллер следующего представления, но это не вывод или помощь plz, здесь приведен код

это моя функция

void receiveData(CFSocketRef s, 
       CFSocketCallBackType type,  
       CFDataRef address, 
       const void *data, 
       void *info)
{
    LoginViewController *lvc = [[LoginViewController alloc] init];

    char *buffer = (char *)CFDataGetBytePtr((CFDataRef)data);

    if (strstr(buffer, "LCNF|ACPT") == NULL)
    { 
        NSLog(@"%@",data);
        [lvc alert];
    }
    else

        [lvc goToWatchList];
}

мой метод "goToWatchlist":

-(void)goToWatchList
{

    WatchListViewController *wlController = [[WatchListViewController alloc] initWithNibName:@"WatchListViewController" bundle:nil];
    [self presentModalViewController:wlController animated:YES];
    [wlController release];
}

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Я делал что-то очень похожее раньше.Вы уверены, что он даже достигает вашего [lvc goToWatchList]; в пределах receiveData?Также проверьте, что ваше чтение из сокета не блокирует поток!

Также проверьте ваш файл xib - если он не может быть найден, он тоже не появится ... (Ups - уже упоминалось, пока я печатал...)

0 голосов
/ 20 апреля 2011

Убедитесь, что это происходит в главном потоке. Также убедитесь, что wlController не равен nil после сообщения инициализации, в случае, если перо не может быть найдено или есть проблема с ним.

Вы создаете новый LoginViewController здесь:

LoginViewController *lvc = [[LoginViewController alloc] init];

Но я не вижу, куда вы добавляете это в представление. Вы помещаете туда свой WatchListViewController, но он не может появиться, потому что его родитель (LoginViewController) не обнаруживается. Да, loadView для LoginViewController - (void) loadView будет вызвано, потому что вы добавляете что-то к нему (WatchViewController), но, поскольку это представление не отображается, ему не нужно загружать представление LoginViewController.

Попробуйте добавить этот код в конец receiveData:

[[[UIApplication sharedApplication] keyWindow] addSubview:lvc.view];

Если это не сработает, попробуйте перейти к функции goToWatchListFunction, чтобы представить контроллер модального представления в [[UIApplication sharedApplication] keyWindow].

...