iOS - Impossible de définir le texte de UILabel
Ok laissez-moi vous expliquer la situation, j'ai deux-vue-contrôleur appelons-la première sna seconde.
- FirstViewController hériter de UITableViewController
- SecondViewController hériter De UIViewController
L'interface pour la SecondViewController est faite avec Interface Builder et contient simplement une étiquette et un UIProgressView. à la fois label et UIProgressView de sortie sont connectés avec le droit des fichiers propriétaire (SecondViewController).
un peu de code, Dans FirstViewController :
la méthode suivante est déclenchée par une notification
- (void) addTransfer:(NSNotification *)notification{
NSLog(@"notification received");
NSDictionary *transferInfo = [notification userInfo];
//I think the problem is here
aTransfer = [[DbTransfer alloc] initWithNibName:@"DbTransfer" bundle:nil];
//
aTransfer.srcPath = [transferInfo objectForKey:@"srcPath"];
aTransfer.dstPath = [transferInfo objectForKey:@"dstPath"];
[aTransfer startTransfer];
[transfer addObject:aTransfer];
[self.tableView reloadData];
}
ceux qui sont de la tableView source de données méthodes
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
//Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
NSLog(@"%d numberOfRowsInSection",[transfer count]);
return [transfer 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] autorelease];
}
[cell.contentView addSubview:[[transfer objectAtIndex:indexPath.row] view]];
return cell;
}
c'est le code de SecondViewController.h
@interface DbTransfer : UIViewController <DBRestClientDelegate> {
IBOutlet UILabel *fileNameLabel;
IBOutlet UIProgressView *transferProgress;
NSString *srcPath;
NSString *dstPath;
DBRestClient *restClient;
}
@property (nonatomic,retain) IBOutlet UILabel *fileNameLabel;
@property (nonatomic,retain) IBOutlet UIProgressView *transferProgress;
@property (nonatomic,retain) NSString *srcPath;
@property (nonatomic,retain) NSString *dstPath;
- (void) startTransfer;
@end
c'est une méthode à l'intérieur d'SecondViewcontroller.m
- (void) startTransfer{
//NSLog(@"%@\n%@",srcPath,dstPath);
if (!fileNameLabel) {
NSLog(@"null");
}
[self.fileNameLabel setText:[srcPath lastPathComponent]];
//self.fileNameLabel.text=@"test";
NSLog(@"%@",fileNameLabel.text);
restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
restClient.delegate=self;
[restClient loadFile:srcPath intoPath:dstPath];
}
comme vous pouvez le voir à l'intérieur de la startTransfer-je vérifier si fileNameLabel est nulle et qu'elle est, et je ne comprends pas pourquoi. Peut-être la valeur null est liée à la répartition de l'iVar aTransfer. btw, il est impossible de définir le texte de l'étiquette.
source d'informationauteur elio.d | 2011-02-19
Vous devez vous connecter pour publier un commentaire.
Le problème était dans l'initialisation, j'ai été la mise à l'étiquette avant le point de vue a été chargé. Initialiser l'étiquette dans le viewDidLoad résolu le problème.
Elio
Test Simple - définir un point d'arrêt à la ligne où vous mettre.fileNameLabel.texte. Lorsque l'application s'arrête là, utiliser le débogueur pour voir si le pointeur est null.
Causes les plus probables:
- La prise de courant n'est pas lié correctement
- Le propriétaire du fichier n'est pas de la bonne classe, assurez-vous de le mettre à votre DbTransfer classe
H