滚动tableview会更改单元格内容

时间:2013-01-21 07:14:23

标签: iphone xcode uitableview

  1. 我在同一个视图中一个接一个地加载两个tableViews(ScrollView)。但是当我尝试滚动第一个tableView然后将它的单元格(第一个和最后一个)内容更改为第二个tableViews单元格时加载它们(第一个和最后一个)content.Could不明白我哪里出错了?
  2. 这是我正在处理的代码:

    - (void)viewDidLoad
    {
          self.tableView1=[[UITableView alloc] initWithFrame:CGRectMake(10,10,310,250) style:UITableViewStylePlain];
            self.tableView1.delegate=self;
            self.tableView1.dataSource=self;
            self.tableView1.rowHeight=80;
            self.tableView1.scrollEnabled = YES;
            currenttableView=@"1";
            [testscroll addSubview:self.tableView1];
     [self performSelector:@selector(callWebserviceMethod) withObject:nil afterDelay:0];
    }
    -(void)callWebserviceMethod
    {
      self.tableView2=[[UITableView alloc] initWithFrame:CGRectMake(10,self.tableView1.frame.origin.y+self.tableView1.frame.size.height+6,310,230) style:UITableViewStylePlain];
            self.tableView2.delegate=self;
            self.tableView2.dataSource=self;
            self.tableView2.rowHeight=80;
             currenttableView=@"2";
            self.tableView2.scrollEnabled = YES;
            [testscroll addSubview:self.tableView2];
    }
    
    
    - (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];
    
        }
        cell.accessoryType= UITableViewCellAccessoryDetailDisclosureButton;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    
    
        if(currenttableView==@"1")
        {
    
    
            cell.textLabel.text = [[filtered objectAtIndex:indexPath.row] objectForKey:@"CompanyName"] ;   //filtered is NSMutableArray
            cell.textLabel.tag=3;
            cell.textLabel.font=[UIFont boldSystemFontOfSize:12];
    
    
            UIButton *showDirections = [UIButton buttonWithType:UIButtonTypeRoundedRect];
            showDirections.frame = CGRectMake(10.0f, 52.0f, 85.0f, 20.0f);
            [showDirections setTitle:@"Direction" forState:UIControlStateNormal];
            [showDirections setTag:indexPath.row];
            [showDirections.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
            showDirections.backgroundColor=[UIColor lightTextColor];
            [ showDirections setBackgroundImage:[UIImage imageNamed:@"background-button.png"] forState:UIControlStateNormal];
            showDirections.titleLabel.textColor=[UIColor whiteColor];
    
            [cell addSubview:showDirections];
            [showDirections addTarget:self action:@selector(showDirectionsfordC:)forControlEvents:UIControlEventTouchUpInside];
    
    
    
            return cell;
    
        }
    
    
         if(currenttableView==@"2")
        {
    
    
            cell.textLabel.text = [[places objectAtIndex:indexPath.row] objectForKey:@"name"] ;    //places is NSMutableArray
            cell.textLabel.lineBreakMode=UILineBreakModeWordWrap;
            cell.textLabel.numberOfLines=0;
            cell.textLabel.font=[UIFont boldSystemFontOfSize:12];
            cell.textLabel.tag=3;
    
    
    
    
            UIButton *showDirections = [UIButton buttonWithType:UIButtonTypeRoundedRect];
            showDirections.frame = CGRectMake(10.0f, 52.0f, 85.0f, 20.0f);
            [showDirections setTitle:@"Direction" forState:UIControlStateNormal];
            [showDirections setTag:indexPath.row];
            [showDirections.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
            showDirections.backgroundColor=[UIColor lightTextColor];
            [ showDirections setBackgroundImage:[UIImage imageNamed:@"background-button.png"] forState:UIControlStateNormal];
            showDirections.titleLabel.textColor=[UIColor whiteColor];
    
            [cell addSubview:showDirections];
            [showDirections addTarget:self action:@selector(showDirections:)forControlEvents:UIControlEventTouchUpInside];
    
            NSString *vicinity1 = [[places objectAtIndex:indexPath.row]objectForKey:@"vicinity"];
            UILabel *vicinity = [[UILabel alloc]initWithFrame:CGRectMake(10, 45, 320, 10)];
            vicinity .font=[UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:12];
            [vicinity  setTextAlignment:UITextAlignmentLeft];
            vicinity.text=[NSString stringWithFormat:@"%@",vicinity1];
    
            vicinity.tag=4;
            [cell addSubview:vicinity ];
            vicinity.hidden=YES;
            [vicinity release];
    
            return cell;
    
    
    
        }
    
        }
    

    我哪里出错?

    2 ..当tableView2为空时,ScrollView仅加载tableView1.Then当我尝试滚动tableView1然后我收到错误:Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array' 在这一行tableView2

    cell.textLabel.text = [[places objectAtIndex:indexPath.row] objectForKey:@"name"] ;//error
    

    我怎样才能实现目标?

1 个答案:

答案 0 :(得分:1)

作为您的第一点,您需要CellIdentifier替换为

  NSString *CellIdentifier =[NSString stringWithFormat:@"%d",indexPath.row];

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

和第二点错误说你已经从placesArray中设置cell.textLabel.text,在任何索引中没有任何数据或密钥,如name,你的数组为Nil,这就是你的应用在滚动时遇到崩溃的原因