我是 iphone 编程新手。如何在不创建太多类文件的情况下创建多个 tableviewcontroller。
就像在 iphone safari 书签栏中,每个新文件夹都创建它,创建文件并推送。它将继续创建表格视图。
如何实现这一点。
问问题
187 次
1 回答
1
您可以创建/编码一个代表您的通用 UITableViewController 的类,然后创建它的多个实例。例如,原始 UITableViewController 子类加载以显示第一页,然后当点击一行时,在您的 didSelectRowAtIndexPath 方法中,实例化您的 UITableViewController 子类的另一个实例并将其推送到导航堆栈上。
记住你这里的面向对象编程技术,一个类不是对象,一个对象是一个类的实例,一个类可以有很多个实例,这就是你需要在这里实现的。
这是一些示例代码:
MyTableViewController.h
#import <UIKit/UIKit.h>
@interface MyTableViewController : UITableViewController
@end
MyTableViewController.m
#import "MyTableViewController.h"
@implementation MyTableViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = NSLocalizedString(@"Master", @"Master");
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
self.clearsSelectionOnViewWillAppear = NO;
self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
}
}
return self;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//HERES THE IMPORTANT PART FOR YOU
//SEE HOW I'M JUST CREATING ANOTHER INSTANCE OF MasterViewController?
//You can tap the rows in this table until memory runs out, but all I have is one table view controller
MyTableViewController *newController = [[[MasterViewController alloc] initWithNibName:@"MyTableViewController" bundle:nil] autorelease];
[self.navigationController pushViewController:newController animated:YES];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
}
cell.textLabel.text = NSLocalizedString(@"Click Me", @"Click Me");
return cell;
}
@end
于 2012-05-09T19:27:09.060 回答