Вы смешиваете UIViews
и UIViewControllers
? У вас должен быть класс DetailViewController
, который наследуется от UIViewController
или некоторого подкласса (например, UITableViewController
); в нем будут DetailViewController.m
и DetailViewController.h
файлы для объявления и определения вашего класса. Он должен иметь соответствующий кончик, который определяет UIView
, который загружает UIViewController
; он будет иметь DetailView.xib
файл.
Вы не можете присвоить значение UILabel
напрямую, потому что UIView
не был загружен в то время, когда вам нужно присвоить значение имени пользователя.
Для того, чтобы делать то, что вы хотите, вы должны объявить открытое свойство (userName
), чтобы «выдвинуть» значение в контроллер подробного представления из главного контроллера. После того, как подробный вид загружен, он может присвоить значение из свойства метке и навигационной панели.
В вашем главном контроллере представления (UITableViewController
):
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:NO];
DetailViewController *detailVC = [[DetailView alloc] initWithNibName:@"DetailView" bundle:nil];
detailVC.userName = [userList objectAtIndex:indexPath.row];
[self.navigationController pushViewController:detailVC animated:YES];
[detailVC release];
}
В вашем детализированном виде контроллер:
DetailViewController.h
@property (retain) NSString* userName;
@property (nonatomic, retain) IBOutlet UILabel *userNameLbl;
DetailViewController.m
@synthesize userName;
@synthesize userNameLbl;
-(void) viewDidLoad {
[super viewDidLoad];
self.userNameLbl.text = self.userName;
self.navigationItem.title = self.userName;
}