2012-05-09 28 views
0

我是iphone編程新手。如何在不創建太多類文件的情況下創建多個tableviewcontroller。
就像在iphone safari書籤欄中創建每個新文件夾一樣,創建文件並推送。它會繼續創建tableviews。
如何實現這一點。iphone多個UITableviewController

回答

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 
+0

感謝答覆。如果你不介意,你能告訴我一些示例代碼。 – raju

+0

只需添加一些示例代碼。讓我知道,如果我可以提供進一步的細節 –

+0

我已經理解,包含在didselectrowatindexpath中的代碼在這兩個控制器之間保持循環。但我想要的是,例如在主tableview用戶選擇 一行它推到另一個控制器。在這個控制器用戶創建一個「一個」項目,它應該推「一個」另一個控制器說第三個控制器。在第三控制器中,如果用戶 創建兩個項目說「一」和「二」。 「one」應該用空tableview推第四個控制器,「two」應該用空tableview推第五個控制器。所有的tableview數據中的 都會有所不同。 謝謝 – raju

相關問題