2011-04-20 79 views
0

我正在处理objective-c中的套接字,所以我写了一个函数来获取服务器的响应,当我的条件变为现实时,我想推到下一个视图控制器,但它不会推送或呈现plz帮助 某些代码在此处给出为什么我无法将viewcontroller推送到下一个viewcontroller?

这是我的功能

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

Thanx提前

+0

感谢7KV7重新格式化... – user387184 2011-04-20 06:21:28

回答

1

我以前做过类似的事情。您确定它甚至可以在receiveData范围内达到[lvc goToWatchList]; ?另外检查你从套接字读取的内容是否阻塞了线程!

还要检查你的XIB文件 - 如果无法找到它不会出现要么...(UPS - 而我打字已经提到...)

+0

感谢您的回答 我的笔尖文件是好的,如果我从任何其他方法或IBAction调用“goToWatchlist”,它工作正常,但如果我从我的函数“receiveData”调用它,那么它去的方法和控制去它自己的“ loadView“之后的一行pushViewController。 – Mashhadi 2011-04-20 06:53:42

0

确保这在主线程上发生。还要确保在初始化消息后wlController不为零,以防无法找到笔尖或者存在问题。

您在这里创建一个新的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]模态视图控制器。

+0

thanx的回复wlController不是没有感染我试图从LoginViewController去watchlistViewCOntroller,但控制转到loginViewController的loadview后presentModel行 – Mashhadi 2011-04-20 06:25:50

+0

你真的添加lvc视图到你的视图层次?在上面的代码中,你不是。因此,您正在将新的模式视图推送到目前尚未显示的视图。 – drewag 2011-04-20 13:52:30

+0

所有给定的代码是在LoginViewController中编写的&lvc是它的函数中创建的对象,并且只用于调用方法,然后我的方法被推入另一个视图控制器,但它不会推动它在执行后调用它自己的loadView “goToWatchList”方法。 – Mashhadi 2011-04-21 04:55:37

相关问题