Joh*_*ohn 2 iphone uitableview xcode4.2
在我之前的问题中,我能够确认我确实需要UITableViewController来显示我的iPhone应用程序的分层数据(使用XCode 4.2).
现在我想看看这样做的示例代码,它可以在XCode 4.2中运行.假设分层数据可以是2到300级之间的任何位置.
我在哪里可以看到这样的示例代码/示例项目?
编辑 - 我发现大多数教程似乎是旧版本的xcode.
这个问题非常广泛,这项工作有很多部分.如果您将其分解为谨慎的步骤,那么您可以找到SO上每个步骤的示例代码,或者询问更具体的问题.如果您需要任何单独步骤的帮助,请发表评论,我可以为您提供指导,但这里有太多内容可以输入一个问题.
以下是我认为你需要解决这个项目的方法:
步骤1.创建数据结构
您将要为每个级别使用NSArray.NSArray可以存储NSDictionaries列表或您自己的自定义NSObject类.两者都有效.如果有标准化的数据结构,那么我建议您创建自己的对象,然后为数组中的每个条目存储该对象.它使得访问对象的属性比对每次访问进行字典查找更容易.当然,您存储在数组中的对象将需要另一个NSArray的字段,该字段将是它下面的子数组.例如,你可能有这样的事情:
@interface MyObject : NSObject {
NSString *nodeTitle;
NSString *nodeDescription;
NSArray *childArray;
}
@property (nonatomic, copy) NSString *nodeTitle;
@property (nonatomic, copy) NSString *nodeDescription;
@property (nonatomic, copy) NSArray *childArray;
Run Code Online (Sandbox Code Playgroud)
在您的类的.m文件中,您将需要在init上将每个ivar设置为nil并在dealloc上释放每个ivar.
第2步.加载数据
您的Feed是在一个大批量中下来的,还是您可以从服务器一次请求一个级别?理想情况下,如果可以避免它,则不会将300个级别存储到内存中(这听起来像一个非常大的xml文件).理想情况下,当用户逐步进入层次结构时,您将加载每个级别.但也许每个节点上的数据量很少,您可以一步加载所有数据,而不是占用大量内存.你需要找出负载例程(一次性或按需).
第3步.展示您的数据
这实际上非常简单.创建一个使用表视图的视图控制器(UITableViewController或嵌入了UITableView的UIViewController).在视图控制器上为此ivar创建一个类型为NSArray的ivar和一个属性(复制它).然后,当您创建此视图控制器时,在将其推送到导航堆栈之前,将NSArray传递给当前级别.然后设置表视图以呈现作为属性传递给视图控制器的NSArray ivar.因此,例如当有人单击表中加载子级别的行时,请执行以下操作:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
int row = [indexPath row];
MyViewController *childView = [[MyViewController alloc] init];
childView.contentArray = ((MyObject *)[contentArray objectAtIndex:row]).childArray;
[self.navigationController pushViewController:childView animated:YES];
[childView release];
}
Run Code Online (Sandbox Code Playgroud)
这假设您已为数组中的每个条目创建了名为MyObject的标准对象,并且它具有一个名为childArray的属性,该属性是下一级别的数组.
那就行了.
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |