iPhone:创建基于层次结构的表格导航

时间:2010-04-24 12:06:10

标签: iphone objective-c uitableview stack

我之前试过问这个,但没有得到回答。基本上,我希望有人向我解释如何创建一个表,当一个单元被点击时,将用户推送到该单元的下一个视图。到目前为止我有这个:

Click here to view what I have.

我还想进一步说,当点击CSS时,它会转到一个新视图,其中包含另一个。然后,该表将用户带到一个可滚动的详细视图,您可以通过它切换页面。

我会感谢更长,更有条理的教程,介绍如何将每一项工作带到工作

这是我的实现文件中的数组:

- (void)viewDidLoad {
    arryClientSide = [[NSArray alloc] initWithObjects:@"CSS", @"HTML", @"JavaScript", @"XML", nil];
    arryServerSide = [[NSArray alloc] initWithObjects:@"Apache", @"PHP", @"SQL", nil];
    self.title = @"Select a Language";
    [super viewDidLoad];
}

和我的.h:

@interface RootViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
    IBOutlet UITableView *tblSimpleTable;
    NSArray *arryClientSide;
    NSArray *arryServerSide;
}

我当前的代码崩溃了脚本,并在控制台中返回此错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "NextView" nib but didn't get a UITableView.'

如果该错误是其未推送的原因,那么解释如何补救也将受到赞赏

NextViewController实施

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    arryBasicCSS = [[NSArray alloc] initWithObjects:@"Implement", @"Syntax", @"Classes and IDs", @"Fonts", @"Backgrounds", @"Lists", @"Links",   nil];
    arryIntermediateCSS = [[NSArray alloc] initWithObjects:@"Padding and Margin", @"Alignment and Floating", @"Pseudo-class and Element", @"Opacity and Display", nil];
    arryAdvancedCSS = [[NSArray alloc] initWithObjects:@"Sprites", @"Attribute Selectors", @"Animation", nil];
    self.title = @"CSS";
    [super viewDidLoad];
}

- (IBAction) changeItemTable:(NSString *)str{
    tblCSS = str;
}

NextViewController.h

@interface NextViewController : UITableViewController {
    IBOutlet UITableView *tblCSS;
    NSArray *arryBasicCSS;
    NSArray *arryIntermediateCSS;
    NSArray *arryAdvancedCSS;
}

非常感谢, 千斤顶

3 个答案:

答案 0 :(得分:1)

首先是“因未捕获的异常而终止应用”错误。我注意到你的RootViewController包含:

    IBOutlet UITableView *tblSimpleTable;

检查以确保您已将RootViewController的“view”属性正确连接到UITableView,而不仅仅是将tblSimpleTable连接到TableView。 UITableViewController中的view属性需要指向UITableView。

假设tblSimpleTable是你要从这个UIViewController控制的TableView,删除这个插座并只使用UITableViewController的“view”或“tableView”属性,它们都是有效的。

有关分层表视图的原始问题,请查看此示例项目:

TheElements

答案 1 :(得分:1)

如果SDK自己的文档未提供您需要的答案,请尝试使用Google搜索UITableView Interface Builder tutorial。这应该返回一些有用的逐步教程。

您获得异常的原因是您没有将tblSimpleTable出口连接到Interface Builder中的表视图对象。

IB Outlets http://i41.tinypic.com/ohr1jb.png

在Interface Builder中打开NextView.xib。选择File's Owner对象。打开Inspector窗格,您应该会看到与我发布的图像类似的内容。您应该阅读“tblSimpleTable”而不是“searchTable”。要将插座连接到文件所有者,请单击并按住“tblSimpleTable”右侧的圆圈,然后将该行拖动到“tblSimpleTable”对象。

alt text http://i44.tinypic.com/2pr8pi0.jpg

保存更改,重建项目。

答案 2 :(得分:0)