2013-11-18 6 views
0

Привет всем Я следовал учебнику, где я объясню, как расширить клетки сделали с выбранной строкойли Selected Row App Крушение

Я выполнил весь массив и возвращают данные правильно, но когда я иду, чтобы выбрать клетка расширить свои сбои приложений давая мне обратно эту ошибку

[PFObject sizeWithFont: constrainedToSize: lineBreakMode]: непризнанные селектор посланный к экземпляру

с точки останова я найти точку, но я не ип понимания всего того, что случилось ... Точка, в которой происходит сбой приложения является

CGSize AltezzaLabel = [ [ ArrayforPost objectAtIndex : index ] sizew sizeWithFont : [ UIFont fontWithName : @ " Helvetica " size : 14.0f ] constrainedToSize : MAX lineBreakMode : NSLineBreakByCharWrapping ] ; 

Ниже я обеспечиваю реализацию для лучшего понимания

#import "FFTimeline.h" 
#import "FFCustomCellTimelineSocial.h" 

@interface FFTimeline() 
@end 

@implementation FFTimeline 
@synthesize ArrayforPost, NuovoArray; 
@synthesize IsFlashPost; 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.FFTableView.delegate = self; 
    self.FFTableView.dataSource = self; 
    CellaSelezionata = -1; 

} 

-(void)viewDidAppear:(BOOL)animated { 
    [self QueryForPost]; 

} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
     return [ArrayforPost count]; 

} 

-(void)QueryForPost { 

    PFQuery *QueryForFriend=[PFQuery queryWithClassName:FF_AMICIZIE_CLASS]; 
    [QueryForFriend whereKey:FF_AMICIZIE_A_USER equalTo:[PFUser currentUser]]; 
    [QueryForFriend whereKey:FF_AMICIZIE_STATO equalTo:@"Confermato"]; 
    [QueryForFriend includeKey:FF_AMICIZIE_DA_USER]; 

    PFQuery *QueryYES = [PFQuery queryWithClassName:FF_POST_CLASS]; 
    [QueryYES whereKey:FF_POST_FLASH_POST_BOOLEANVALUE equalTo:[NSNumber numberWithBool:YES]]; 
    [QueryYES whereKey:FF_POST_SCELTI equalTo:[PFUser currentUser]]; 

    PFQuery *normalPostByFriends = [PFQuery queryWithClassName: FF_POST_CLASS]; 
    [normalPostByFriends whereKey: FF_POST_FLASH_POST_BOOLEANVALUE equalTo: [NSNumber numberWithBool: NO]]; 
    [normalPostByFriends whereKey: FF_POST_UTENTE matchesKey:FF_AMICIZIE_DA_USER inQuery:QueryForFriend]; 

    PFQuery *normalPostByUser = [PFQuery queryWithClassName:FF_POST_CLASS]; 
    [normalPostByUser whereKey:FF_POST_FLASH_POST_BOOLEANVALUE equalTo: [NSNumber numberWithBool: NO]]; 
    [normalPostByUser whereKey:FF_POST_UTENTE equalTo: [PFUser currentUser]]; 

    PFQuery *query = [PFQuery orQueryWithSubqueries:@[QueryYES,normalPostByFriends,normalPostByUser]]; 
    [query includeKey:FF_POST_UTENTE]; 
    [query orderByDescending:FF_CREATEDAT]; 
    [query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) { 

     if (!error) { 
      NSLog(@"%@", results); 
      ArrayforPost = [[NSMutableArray alloc] init]; 
      for (PFObject *object in results) { 
       [ArrayforPost addObject:object]; 
      } 
      [self.FFTableView reloadData]; 
     } 
    }];  

} 


-(CGFloat)valoreAltezzaCella:(NSInteger)index { 

    CGSize MAX = CGSizeMake(230, 10000); 
    CGSize AltezzaLabel = [[ArrayforPost objectAtIndex:index] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14.0f] constrainedToSize:MAX lineBreakMode:NSLineBreakByWordWrapping]; 

    return AltezzaLabel.height; 
} 



- (FFCustomCellTimelineSocial *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    FFCustomCellTimelineSocial *cell = (FFCustomCellTimelineSocial *)[self.FFTableView dequeueReusableCellWithIdentifier:@"CellPost"]; 
    if (!cell) { 
     cell = [[FFCustomCellTimelineSocial alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellPost"]; 
    } 


    if (CellaSelezionata == indexPath.row) { 
     CGFloat AltezzaLabel = [self valoreAltezzaCella: indexPath.row]; 
     cell.FFTestoUtenteLabel.frame = CGRectMake(cell.FFTestoUtenteLabel.frame.origin.x, cell.FFTestoUtenteLabel.frame.origin.y, cell.FFTestoUtenteLabel.frame.size.width, AltezzaLabel); 
    } else { 
     cell.FFTestoUtenteLabel.frame = CGRectMake(cell.FFTestoUtenteLabel.frame.origin.x, cell.FFTestoUtenteLabel.frame.origin.y, cell.FFTestoUtenteLabel.frame.size.width, 65); 
    } 

    PFObject *ObjectPost = [ArrayforPost objectAtIndex:indexPath.row]; 

    cell.FFTestoUtenteLabel.font = [UIFont fontWithName:@"Helvetica" size:14.0f]; 
    NSString *text = [ObjectPost objectForKey:@"Testo"]; 

    cell.FFTestoUtenteLabel.text = text; 
    [cell.FFTestoUtenteLabel setLineBreakMode:NSLineBreakByWordWrapping]; 


    cell.backgroundCell.layer.masksToBounds = YES; 
    cell.backgroundCell.layer.cornerRadius = 5.0f; 


    cell.backgroundFotoProfilo.layer.masksToBounds = YES; 
    cell.backgroundFotoProfilo.layer.cornerRadius = 35.0f; 

    cell.FFImmagineUtente.layer.masksToBounds = YES; 
    cell.FFImmagineUtente.layer.cornerRadius = 30.0f; 
    cell.FFImmagineUtente.contentMode = UIViewContentModeScaleAspectFill; 


    PFObject *rowObject = [ArrayforPost objectAtIndex:indexPath.row]; 

     if([[rowObject objectForKey:FF_POST_FLASH_POST_BOOLEANVALUE ] boolValue]) { 
      cell.FlashPostImg.image = [UIImage imageNamed:@"FFNotificaFlash"]; 
     } 

     else { 
      cell.FlashPostImg.image = [UIImage imageNamed:@" "]; 
     } 



    return cell; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 

    if (CellaSelezionata == indexPath.row) 

    { 
     return [self valoreAltezzaCella:indexPath.row] + 10 * 2; 

    } 

    else { 
     return 65 + 10 * 2; 
    } 

} 

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if ([self valoreAltezzaCella:indexPath.row] > 65) { 
     return indexPath; 
    } else { 
     return nil; 
    } 
} 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (CellaSelezionata == indexPath.row) { 
     CellaSelezionata = -1; 
     [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
     return; 
    } 

    if (CellaSelezionata >= 0) { 
     NSIndexPath *previousPath = [NSIndexPath indexPathForRow:CellaSelezionata inSection:0]; 
     CellaSelezionata = indexPath.row; 
     [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:previousPath] withRowAnimation:UITableViewRowAnimationFade]; 

    } 

    CellaSelezionata = indexPath.row; 
    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 
+0

Скопируйте ваш настоящий код. Этот код не компилируется, поскольку он содержит множество синтаксических ошибок. –

+0

Я отредактировал мой код, вставив весь файл. m P.S Я использую Parse.com – kAiN

+0

какие объекты находятся в ArrayforPost? –

ответ

1

В вашем методе valoreAltezzaCella:, [ArrayforPost objectAtIndex:index] является PFObject и не NSString, поэтому вы не можете применить к нему sizeWithFont. Вероятно, вы хотите что-то похожее на:

PFObject *objectPost = [ArrayforPost objectAtIndex:indexPath.row]; 
NSString *text = [objectPost objectForKey:@"Testo"]; 
CGSize altezzaLabel = [text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14.0f] constrainedToSize:MAX lineBreakMode:NSLineBreakByWordWrapping]; 
+0

Это работает, теперь приложение не разбивается и создает анимацию в ячейке, но полный текст метки не отображается ... Что изменилось? – kAiN