Я хочу создать заголовок раздела, который загружает файл nib и устанавливает его как заголовок UIView. Этот файл nib также будет иметь связанный класс, к которому подключены выходы и действия, поэтому я хочу загрузить этот класс с помощью nib, как обычно.Используйте наконечник в виде заголовка секции таблицы с nib-классом
Я просмотрел веб-страницы и нашел несколько похожих ответов, но я не могу заставить их работать для меня. Проиграв несколько дней, мне удалось получить представление, чтобы показать его правильно, но он ничего не делает, несмотря на добавление соединений и передачу текста по-разному.
Например, он должен очистить текст заголовка раздела, если он инициализирован с помощью nil, и он делает это, но он все еще показывает один и тот же текст, попытки его изменения не отражают ни одного, и никакие соединения, сделанные с помощью кнопки, не запускаются ,
Вот мой взгляд контроллер для зрения
@interface ADUNewRowHeaderViewController : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *sectionTitleField;
@property (strong, nonatomic) IBOutlet UIButton *addRowBtn;
@property(strong,nonatomic) NSString* sectionTitle;
- (id)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil
title:(NSString*) titleOrNil;
@end
и здесь реализация
@implementation ADUNewRowHeaderViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil title:(NSString *)titleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
if(titleOrNil != nil)
{
[self setSectionTitle:titleOrNil];
}
else
{
[self setSectionTitle:@""];
}
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)setSectionTitle:(NSString *)sectionTitle
{
_sectionTitle = sectionTitle;
[[self sectionTitleField] setText:sectionTitle];
}
@end
в самом контроллере табличного он внесен в список
@property(nonatomic, strong) ADUNewRowHeaderViewController* secHeader;
и в файл реализации под viewDidLoad как
[self setSecHeader:[[ADUNewRowHeaderViewController alloc] initWithNibName:nil bundle:nil title:nil]];
[[[self secHeader] addRowBtn] addTarget:self action:@selector(addNewRow:) forControlEvents:UIControlEventTouchUpInside];
и
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
return [[self secHeader] view];
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return [[self secHeader] view].bounds.size.height;
}
это объявление метода для действия
- (IBAction)addNewRow:(id)sender;
Это сработало отлично, за исключением того, что мне пришлось удалить 'CGRect frame = self.frame; self.view.frame = CGRectMake (0, 0, frame.size.width, frame.size.height); 'from setUp и после этого он работал –
Также UIButton, который у меня есть в nib, заметно медленнее, чем панель инструментов, которая был изначально, так как я мог нажимать кнопку панели инструментов несколько раз в секунду, и он бы быстро добавил эти строки, но если бы я несколько раз нажимал новую кнопку ниба за секунду, она могла добавлять только один или два.Кнопка реагирует нормально, это просто строки не получают сразу же добавил (Это проблема не только то, что я заметил) –
Пожалуйста, выберите это как ответ. –