2011-04-20 76 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

相關問題