1

Я хочу создать «подробное представление» в моем навигационном приложении, аналогичном приложению адресной книги.Создайте пользовательский UIView как tableHeaderView программно

Я хочу создать UIView, который имеет UIImageView и UILabel, что я могу передать в tableHeaderView свойство а UITableVIew «s при нажатии навигационного контроллера. Текст ярлыка и изображение должны получать информацию из контекста управляемого объекта при загрузке.

Я начал пытаться сделать это с помощью IB, но надоело, когда текст ярлыка не будет обновляться, независимо от того, где я положил myView.UILabel.text = @"some new text". Он просто продолжал представлять текст, который я ввел в окно инспектора IB.

Таким образом, без использования IB, как бы я хотел создать UIView, в котором есть UILabel и UIImageView?

Должен ли я создавать новый класс, который является подклассом UIViewController или просто UIView?

Как я могу создать суб-представления для метки и изображения?

Укажите, где должен быть указан URL текста и изображения в коде? (viewDidLoad или loadView или viewWillLoad) (UIView, UIViewController, detailViewController)?

ответ

1

Если вы начали использовать IB, и текст UILabel не обновлялся, звучит как IBOutlet вашего контроллера просмотра неправильно подключен к ярлыку в IB.

Надеюсь, это исправит вашу проблему с использованием IB. И в коде viewController вы должны обновить этот текст в viewDidLoad.

Но если вы хотите сделать это программно, я бы сделал подкласс UIView (не UIViewController).

И я бы переопределил initWithFrame и выполнил все настройки там.

Что-то вроде следующего:

myView.m

@implementation myView 

@synthesize imageView, myLabel; 

- (id) initWithFrame:(CGRect) frame 
{ 
    if (self = [super initWithFrame:frame]) { 

     // Setup your image view and add it to the view. 
     self.imageView = [[[UIImageView alloc] initWithFrame:initWithFrame:frame] autorelease]; 
     self.imageView.image = ... 
     [self addSubview:self.imageView]; 

     // Setup your label 
     self.myLabel = [[[UILabel alloc] initWithFrame:frame] autorelease]; 
     self.myLabel.text = @"whatever you like"; 
     [self addSubview:self.myLabel]; 
    } 
    return self; 
} 

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

Смежные вопросы