2010-04-22 170 views
19

我正在一个应用程序中工作,我在UITableView有数据。它就像是一个向下钻取的应用程序。用户将点击一行,然后转到下一页,显示UITableView中的更多记录。但在我的情况下,问题是我不知道多少级别的用户可以钻。级别数量不固定。所以现在我想创建并以编程方式添加viewcontrollers。可能吗??如果是的话如何? 在此先感谢。如何以编程方式创建UIViewController?

回答

20
UIViewController *controller = [[UIViewController alloc] init]; 
controller.view = whateverViewYouHave; 

你有你自己的视图控制器,你编码?在这种情况下,如果您使用的是IB,那么您可能不需要设置视图属性。当你有你的控制器,你可以将它推到navigationController或模态地查看它等。

+0

现在,我在一个视图控制器,并希望将用户引导到新的视图 - 控制和显示数据的实现代码如下 – pankaj 2010-04-22 07:10:38

+0

,是的,还有一个件事用户还可以进一步下降,从这个新的programmically创建视图 - 控制 – pankaj 2010-04-22 07:11:30

+2

然后深入到一个新的水平你可能希望你的第一个视图控制器是一个UINavigationController。 – willcodejavaforfood 2010-04-22 08:21:55

3

UIViewController s总是以编程方式创建。这听起来像你只需要具有用于视图控制器的每个电平相同的类,例如:

//CoolViewController:UITableViewController 
//CoolViewController.m 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (!self.isAtTopLevel) { 
     CoolViewController *cvc = [[CoolViewController alloc] initWithRecord:[self.records objectAtIndex:indexPath.row]]; 
     [self.navigationController pushViewController:cvc animated:YES]; 
     [cvc release]; 
    } else { 
     //do something else 
    } 
} 

在这种情况下,thingies将某种递归的NSArray(即数组的数组)的。

+0

感谢eman的回答,在这个新的视图控制器中,我需要显示带有记录的UITableview。我将如何做到这一点? – pankaj 2010-04-22 07:09:29

+0

是的,还有一件事用户还可以从这个新的程序化创建的视图控制器 – pankaj 2010-04-22 07:12:08

+0

(更新的示例)进一步深入到下一级在此示例中,每个表视图控制器都有一个记录数组,其中每个记录都有一个数组子记录(纠正我,如果我没有正确理解设计)。所以你可以有一个名为Record的类,它有一个名字(显示在表格单元格中)和一个“记录”的“NSArray” - 每个表格视图控制器都会显示子记录数组。 – shosti 2010-04-22 07:41:37