0

我正在使用objective-c中的套接字,所以我编写了一个函数,用于在我的条件成真时获取服务器的响应我想推送到下一个视图控制器,但它没有推送或呈现请帮助这里给出一些代码

这是我的功能

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];
}

提前感谢

4

2 回答 2

1

我以前做过非常相似的事情。你确定它甚至到达你的[lvc goToWatchList]; 内心receiveData吗?还要检查您从套接字读取的内容是否没有阻塞线程!

还要检查您的 xib 文件 - 如果找不到,它也不会出现......(Ups - 在我打字时已经提到......)

于 2011-04-20T05:55:25.450 回答
0

确保这发生在主线程上。还要确保在初始化消息之后 wlController 不是 nil,以防找不到 nib 或它有问题。

您在这里创建一个新的 LoginViewController:

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

但是我看不到您将其添加到视图的位置。您将 WatchListViewController 推到上面,但它不能出现,因为它的父级(LoginViewController)没有出现。是的,将调用 LoginViewController -(void)loadView 上的 loadview,因为您正在向其中添加一些内容(WatchViewController),但由于该视图没有显示,因此不需要加载 LoginViewController 的视图。

尝试将此代码添加到 receiveData 的末尾:

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

如果这不起作用,请尝试更改为 goToWatchListFunction 以在 [[UIApplication sharedApplication] keyWindow] 上显示模态视图控制器。

于 2011-04-20T05:49:47.737 回答