我是iphone编程新手。如何创建多个tableviewcontroller而不创建太多的类文件。
在iphone safari书签栏中,每个新文件夹创建它,创建文件和推送。它将继续创建tableviews。
如何实现这一点。
答案 0 :(得分: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