2012-05-02 46 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