我正在单视图控制器上开发具有多个TableView的iOS应用程序。值从单个数组显示在每个tableview上。但问题是数组值显示在第一个表视图上,而不显示在另一个表视图上。有时候第二个tableview单元格值显示第一个tableview。我也试着用tableview标签值。
code..
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [_arrayResult count];
}
- (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];
}
if ( tableView == _tableView) { //_clentSelect.tag == 2
MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
UILabel *dropValue = (UILabel *)[cell viewWithTag:100];
dropValue.text = obj.emp_client_name;
}
if (tableView == _eventSeclect) { //_clentSelect.tag == 2
MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
UILabel *dropValue = (UILabel *)[cell viewWithTag:1000];
dropValue.text = obj.emp_event_name;
NSLog(@"%@",dropValue.text);
}
// if(_clentSelect.tag == 3) {
//
// MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
// cell.textLabel.text = obj.emp_client_name;
// }
return cell;
}
答案 0 :(得分:2)
- (void)viewDidLoad {
[super viewDidLoad];
//reload your table
}
#pragma mark - UITableViewDataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView.tag==1) {
return 1;
}if (tableView.tag==2) {
return 1;
}
else
{
return 0;
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView.tag == 1) {
return 10;
}if (tableView.tag == 2) {
returns 20;
}
else{return 0;}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
if (tableView.tag == 1) {
static NSString *cellIdentifier = @“tbl1”;
cell = [_tbl dequeueReusableCellWithIdentifier:cellIdentifier];
UILabel *title = (UILabel *)[cell viewWithTag:30];
title.text = @"1245";
return cell;
}
if (tableView.tag == 2) {
static NSString *cellIdentifier = @“tbl2”;
cell = [_tbl1 dequeueReusableCellWithIdentifier:cellIdentifier];
UILabel *title = (UILabel *)[cell viewWithTag:30];
title.text = @"1245";
return cell;
}
答案 1 :(得分:0)
这适合你吗?如果没有,也请尝试更改UITableView插座名称。
if ( tableView == tableViewFirst) { //_clentSelect.tag == 2
MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
UILabel *dropValue = (UILabel *)[cell viewWithTag:100];
dropValue.text = obj.emp_client_name;
}
else { //_clentSelect.tag == 2
MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
UILabel *dropValue = (UILabel *)[cell viewWithTag:1000];
dropValue.text = obj.emp_event_name;
NSLog(@"%@",dropValue.text);
}
答案 2 :(得分:0)
你总是得到一个引用并检查调用哪个tableView委托或dataSource方法,即如果你需要不同的tableview和不同的数组,那么你需要为每个tableview设置行数和节数,如下所示:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (tableView == self.tableView1)
{
return 1;
}
if (tableView == self.tableView2)
{
return 1;
}
if (tableView == self.tableView3)
{
return 1;
}
}
另外,对于行数,
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section {
if (tableView == self.tableView1)
{
return 1;
}
if (tableView == self.tableView2)
{
return 2;
}
if (tableView == self.tableView3)
{
return 3;
}
}
检查您要提供哪个表格视图,
您可以为tableview定制单元格,也可以为每个tableview创建单独的单元格。
两个tableview的相同单元格:(在视图中注册你的自定义nib加载)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (tableView == myTableView1) {
// your code 1
}
else
if (tableView == myTableView2) {
// your code 2
}
else
if (tableView == myTableView3) {
// your code 3
}
}
用于tableview的不同单元格:(在视图中注册你的自定义nib加载)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == myTableView1) {
// your code 1
NSString *CellIdentifier = @"cell1";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
}
else
if (tableView == myTableView2) {
// your code 2
NSString *CellIdentifier = @"cell2";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
}
else
if (tableView == myTableView3) {
// your code 3
NSString *CellIdentifier = @"cell3";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
}
}