2012-01-02 1 views
2
- (int)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
return 1; 

} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection: (NSInteger)section 
{ 
return @"Substitutes"; 
} 

- (int)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section 
{ 

int cnt=[subArray count]; 
return [subArray count]; 
} 

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSArray *visible = [tableView indexPathsForVisibleRows]; 

NSIndexPath *indexpath = (NSIndexPath*)[visible objectAtIndex:0]; 


if ((selectedIndexPath != nil) && (selectedIndexPath.row == indexPath.row)){ 


    NSUInteger row = [indexPath row]; 

    NSString *subtitle =[[subArray objectAtIndex:row] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    NSString *subDet =[[subDetArray objectAtIndex:row] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    int height = [self heightOfCellWithTitle:subtitle andSubtitle:subDet]; 
    return(height < CONST_Cell_height ? CONST_Cell_height : height); 


} 

return 40.0; 

}のUITableViewと共に使用するための無効なインデックスのパスを一定数

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSUInteger row = [indexPath row]; 
static NSString *CellIdentifier = @"SearchCell"; 
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 
if ((selectedIndexPath != nil) && (selectedIndexPath.row == indexPath.row)){ 
    cell = [self CreateMultilinesCell:CellIdentifier]; 

    cell.textLabel.text=[[subArray objectAtIndex:row] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    cell.detailTextLabel.text =[[subDetArray objectAtIndex:row] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    return cell;   
} else { 

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 

    cell.textLabel.text=[[subArray objectAtIndex:row] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    cell.detailTextLabel.text =[[subDetArray objectAtIndex:row] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    return cell; 
} 

} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (selectedIndexPath == indexPath) { 
    selectedIndexPath = nil; 
    [table reloadData]; 
} else { 
    selectedIndexPath = indexPath; 
    //static NSString *CellIdentifier = @"Cell"; 
    //UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

    //[email protected]"test"; 
    //cell.detailTextLabel.text [email protected]"det Test"; 
    [table reloadData]; 
} 
[self.table deselectRowAtIndexPath : indexPath animated : NO]; 
[tableView beginUpdates]; 
[tableView endUpdates]; 

} 

超えて行を選択する私は何行を選択code.when上に使用していないテーブル・ビューを実施しました。 26 v以上 は選択を拡大しますが、次のクリックでは縮小しません。 &スクロールでエラーが発生する

NSInternalInconsistencyException '、理由:' UITableViewで使用するインデックスパスが無効です。表ビューに渡される索引パスには、セクションと行を指定する正確に2つの索引が含まれていなければなりません。可能であれば、UITableView.hのNSIndexPathのカテゴリを使用してください。

コードは25行でスムーズに動作します。どこが間違っていた?

答えて

2

selectedindexpathはガベージを返します。私はself.selectedIndexpathに置き換えます。 私はなぜそれがレコード番号でそうするのか分からなかった。このonwards.But 25は

+0

のように私のために働きました... – iKambad

2

使用、それはまた、私の感謝のために働くこの

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:sender.tag-1 inSection:0]; 

CGRect rectOfCellInTableView = [objTableView rectForRowAtIndexPath:indexPath]; 

CGRect rectOfCellInSuperview = [objTableView convertRect:rectOfCellInTableView toView:[objTableView superview]];