0

我是 iphone 编程新手。如何在不创建太多类文件的情况下创建多个 tableviewcontroller。
就像在 iphone safari 书签栏中,每个新文件夹都创建它,创建文件并推送。它将继续创建表格视图。
如何实现这一点。

4

1 回答 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 回答