IOS - невозможно установить текст UILabel

Хорошо, позвольте мне объяснить ситуацию, у меня есть два контроллера представлений, которые позвонят им в первую секунду.

  • FirstViewController наследуется от UITableViewController
  • Наследование SecondViewController из UIViewController

Интерфейс для SecondViewController выполняется с помощью Interface Builder и содержит просто ярлык и UIProgressView. как этикетка, так и выход UIProgressView соединены с владельцем правильных файлов (SecondViewController).

немного кода, In FirstViewController:

следующий метод инициируется уведомлением

- (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];

}

это методы tableView dataSource

- (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;

}

это код 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

это метод внутри SecondViewcontroller.m

- (void) startTransfer{
//NSLog(@"%@\n%@",srcPath,dstPath);

if (!fileNameLabel) {
    NSLog(@"null");
}
[self.fileNameLabel setText:[srcPath lastPathComponent]];
//[email protected]"test";


NSLog(@"%@",fileNameLabel.text);


restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
restClient.delegate=self;

[restClient loadFile:srcPath intoPath:dstPath];

}

как вы можете видеть внутри startTransfer, я проверяю, является ли fileNameLabel нулевым, и это так, и я не понимаю, почему. Возможно, нулевое значение связано с распределением iVar aTransfer. btw невозможно установить текст метки.

Ответы

Ответ 1

Проблема была в инициализации, я устанавливал метку перед загрузкой представления. Инициализация метки в viewDidLoad решила проблему.

Ответ 2

Элио

Простой тест - установите точку останова в строке, где вы устанавливаете self.fileNameLabel.text. Когда приложение останавливается там, используйте отладчик, чтобы увидеть, является ли указатель нулевым.

Скорее всего, причины: - Выход не подключен должным образом - Владелец файла не имеет нужного класса, не забудьте установить его в класс DbTransfer

Н