2010-03-26 1 views
2

Как я могу добавить 2 UITableView на 1 nib/UIView, но используя 2 разных UITableViewController для обработки?Как добавить 2 UITableView на 1 nib/UIView, но с помощью 2 разных UITableViewController для обработки?

Спасибо за помощь!


Обновлено:


Я понимаю основную идею, но я просто не могу заставить его работать вместе.

Возможно, это простой вопрос, но для кого-то не знаю, это, очевидно, сложно.

Кто-нибудь может помочь устранить проблему?

Я создал приложение, основанное на представлении с именем «MutiTableView», затем перетащите &. Снимите 2 TableView в наконечник.

Это сгенерированный ViewController, я добавляю 2 IBOutlet, чтобы соединить 2 таблицы в наконечнике.

@class FirstTableViewController; 
@class SecondTableViewController; 
@interface MutiTableViewViewController : UIViewController { 

    UITableView *tablefirst; 
    UITableView *tablesecond; 
    FirstTableViewController *firstController; 
    SecondTableViewController *secondController; 
} 

//@property (nonatomic, retain) IBOutlet Table1ViewController *viewController; 
@property (nonatomic, retain) IBOutlet UITableView *tablefirst; 
@property (nonatomic, retain) IBOutlet UITableView *tablesecond; 
@property (nonatomic, retain) FirstTableViewController *firstController; 
@property (nonatomic, retain) SecondTableViewController *secondController; 

Это, как я установить источник данных и делегирует

- (void)viewDidLoad { 
    NSLog(@"viewDidLoad :("); 
    firstController = [[FirstTableViewController alloc] initWithStyle:UITableViewStylePlain]; 
    secondController = [[SecondTableViewController alloc] initWithStyle:UITableViewStylePlain]; 

    tablefirst.delegate = firstController; 
    tablefirst.dataSource = firstController; 

    tablesecond.delegate = secondController; 
    tablesecond.dataSource = secondController; 

    [super viewDidLoad]; 
} 

Это мой FirstTableViewController, это только основные tableViewController

@interface FirstTableViewController : UITableViewController { 
    NSArray *listData; 
} 
@property (nonatomic,retain) NSArray * listData; 
@end 

#import "FirstTableViewController.h" 


@implementation FirstTableViewController 
@synthesize listData; 
/* 
- (id)initWithStyle:(UITableViewStyle)style { 
    // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. 
    if (self = [super initWithStyle:style]) { 
    } 
    return self; 
} 
*/ 


- (void)viewDidLoad { 
    NSLog(@"FirstTableViewController viewDidLoad"); 
    NSArray * array = [[NSArray alloc] initWithObjects:@"111",@"222",@"333",@"444",@"555",@"666",@"777",@"888",@"999",@"000",nil]; 
    self.listData = array; 
    [array release]; 
    [super viewDidLoad]; 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

..... 

Я также реализованы методы, как следующее.

numberOfSectionsInTableView 
tableView:numberOfRowsInSection: 
tableView:cellForRowAtIndexPath: 

ответ

1

Установите делегат и источник данных для разных UITableViewControllers.

AUITableViewController * firstController = [[AUITableViewController alloc] init]; 
UITableView * table1 = [[UITableView alloc] initWith...]; 
table1.delegate = firstController; 
table1.dataSource = firstController; 
[someView addSubview:table1]; 
[table1 release]; 
[firstController release]; 

AnotherUITableViewController * secondController = [[AnotherUITableViewController alloc] init]; 
UITableView * table2 = [[UITableView alloc] initWith...]; 
table2.delegate = secondController; 
table2.dataSource = secondController; 
[someView addSubview:table2]; 
[table2 release]; 
[secondController release]; 

Это не проверено, но это основная идея.

Чтобы сделать это в построителе интерфейса, просто подключите соединители DataSource и Delegate к различным классам/контроллерам.

+0

С другой стороны, не выпускайте контроллеры просмотра. Объявите их в .h, alloc на viewDidLoad и поместите выпуск в dealloc. –

+0

Я пробовал, но не мог заставить его работать ... дополнительная информация добавлена. – Jacky

+0

Если вы делаете это в IB, может возникнуть идея подключить выходы dataSource и Delegate к различным классам, а не делать это в viewDidLoad. –

Смежные вопросы