2012-05-02 266 views
0

我有一個應用程序在肖像,在我的視圖控制器(UIViewController,而不是一個UITableViewController)有一個表(UITableView),只佔用一半的屏幕。 我在我的表視圖的委託和數據源設置爲我的視圖控制器。現在從UITableView顯示詳細信息

,我想展現的細節圖當我選擇我的表中的任意單元格。這是我試過的,但沒有出現:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

NSLog(@"SELECTED"); 

//ChangeView 

DetailViewController *dvController = [[DetailViewController alloc] 
initWithNibName:@"DetailViewController" bundle:nil]; 

[self.navigationController pushViewController:dvController animated:YES]; 
dvController = nil; 

} 

任何想法?這個解決方案比彈出式解決方案更好嗎?

回答

2

你應該檢查在筆尖文件時,它的數據源和委託你的tableview連接或沒有? 只是文件的所有者同時連接。

,如果你正在使用的UIView控制器然後使用當前的模型視圖控制器不推模型視圖控制器。

DetailViewController *dvc=[[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil]; 
[self presentModalViewController:dvc animated:YES]; 
+0

現在,代理和數據源已連接。如何使用現有模型視圖控制器?連接委託和數據源的表是工作或沒有經過 – Byteros

+0

首先檢查?如果工作,那麼它的確定與PUCH通知或如果不工作,然後與目前modelviewcontroller.I嘗試將顯示that.first嘗試,只有代碼。 – vishiphone

+0

我上面編輯了我的代碼。 – vishiphone

2

到位零放[NSBundle mainBundle]。希望能幫助到你。告訴我發生了什麼事! 還與[dvController release];

編輯替換dvController=nil; 更換烏爾初始化函數與這一個:

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
return self; 
} 
+0

我試過了,但沒有。我使用ARC,我不能使用「發佈」。 – Byteros

+0

mmm。好。 init函數是否存在於您推送的控制器中? – Deviator

+0

這是經典的initWithNibName: - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 如果(個體經營){// 自定義初始化 } 迴歸自我; } – Byteros

0

處於navigationcontroller與tableview中的視圖 - 控制?如果沒有的話首先你要創建一個與當前視圖 - 控制作爲rootviewcontroller.then一個navigationcontroller試試這個代碼ü使用現在

+0

是的情況,但不工作。我不知道。 – Byteros

+0

@Byteros在你的評論zero0cool你說沒有navigationcontroller .... ????矛盾? – sujith1406

+0

是的,之前。現在是英寸我已經綁定了@ zero0cool的解決方案。 – Byteros

1

初始化導航控制器。因爲有一段時間它是由於未經初始化的UI組件。但請記住,你可能要面對一些其他的UI問題

1

你應該或是否didSelectRowAtIndexPath真的叫不是當你選擇一個表格單元格(不,您的代理可能未正確設置),那麼如果

DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 

返回nil或調試器有意義的東西,試圖關閉該問題。此外,@ M.A.Khan是正確的,你應該刪除

dvController = nil; 

[dvController release]; 

放棄在主視圖中的參考替換它。

編輯: 您的代碼asumes您的UIViewController下,有一個UINavigationController因爲你使用[self.navigationController pushViewController]。如果沒有,怪不得你的觀點並沒有得到被推到一些不存在的。

+0

沒有UINavigationController。可能是這個問題。我嘗試做一些事情。 – Byteros

+0

它使用的UINavigationController到您的應用程序並添加您的UIViewController作爲rootController到它,當你啓動應用程序的一個簡單的事情。那麼你的代碼將工作。 – zero0cool

+0

不要工作。我不知道。 DetailViewController被初始化,但沒有顯示。 – Byteros