iphone多个UITableviewController

时间:2012-05-09 19:12:45

标签: iphone objective-c

我是iphone编程新手。如何创建多个tableviewcontroller而不创建太多的类文件。
在iphone safari书签栏中,每个新文件夹创建它,创建文件和推送。它将继续创建tableviews。
如何实现这一点。

1 个答案:

答案 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