作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 1 个 nib/UIView 上添加 2 个 UITableView,但使用 2 个不同的 UITableViewController 来处理?
感谢您的帮助!
<小时/>更新:
<小时/>我理解基本思想,但我就是无法让它协同工作。
也许这是一个简单的问题,但对于不知道的人来说,这显然是一个困难的问题。
有人可以帮助解决一点问题吗?
我创建了一个名为“MutiTableView”的基于 View 的应用程序,然后将 2 个 TableView 拖放到 Nib 中。
这是生成的 ViewController,我添加 2 个 IBOutlet 以便与 Nib 中的 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;
这就是我设置数据源和委托(delegate)的方式
- (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:
最佳答案
将委托(delegate)和数据源设置为不同的 UITableViewController。
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];
尚未经过测试,但这是基本思想。
要在界面生成器中执行此操作,只需将数据源和委托(delegate)连接器连接到不同的类/ Controller 。
关于iphone - 如何在 1 个 nib/UIView 上添加 2 个 UITableView 但使用 2 个不同的 UITableViewController 来处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524417/
我是一名优秀的程序员,十分优秀!