Я сделал пользовательскую кнопку с помощью drawRect: и поместил ее в свой headerview для моего стола. Я хочу, чтобы пользовательская кнопка была скрыта при выборе режима редактирования. я знаю, что я могу сделать это с помощью метода:Как скрыть пользовательскую кнопку, когда включен режим редактирования?
-(void)setEditing:(BOOL)editing animated:(BOOL)animated
, но по какой-то причине, моя кнопка на самом деле не исчезающий, когда я либо 1) установить его на ноль, 2) или использовать button.hidden свойство. Вот мой код:
TableViewController.h:
@interface ToDoTableViewController : UITableViewController <Properties2ViewControllerDelegate, UITableViewDelegate>{
addButtonView *button;
}
@property (strong, nonatomic) NSMutableArray *taskArray;
@property (strong, nonatomic) NSMutableArray *completedArray;
-(IBAction)addCell:(id)sender;
-(void)buttonPressed:(id)sender;
@end
TableViewController.m
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *headerView;
UIView *seperatorView;
CGRect testFrame = CGRectMake(280.0, 5.0, 30.0, 30.0);
button = [[addButtonView alloc]initWithFrame:testFrame];
NSString *sectionTitle = @"Incomplete Tasks";
NSString *section2Title = @"Completed Tasks";
UILabel *label = [[UILabel alloc]init];
label.textColor = [UIColor colorWithRed:236.0/255 green:240.0/255 blue:241.0/255 alpha:1.0f];
label.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:25];
label.backgroundColor = [UIColor clearColor];
label.frame = CGRectMake(10.0, 0.0, 320.0, 40.0);
headerView = [[UIView alloc]initWithFrame:label.frame];
[button addTarget:self action:@selector(addCell:) forControlEvents:UIControlEventTouchUpInside];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
CGRect sepFrame = CGRectMake(0, headerView.frame.size.height-2, 320, 1);
seperatorView = [[UIView alloc] initWithFrame:sepFrame];
seperatorView.backgroundColor = [UIColor colorWithRed:236.0/255 green:240.0/255 blue:241.0/255 alpha:1.0f];
[headerView addSubview:seperatorView];
switch (section) {
case 0:
label.text = sectionTitle;
[headerView addSubview:label];
[headerView addSubview:button];
break;
case 1:
label.text = section2Title;
[headerView addSubview:label];
// if (completedArray == nil)
// headerView.hidden = YES;
break;
}
return headerView;
}
-(void)setEditing:(BOOL)editing animated:(BOOL)animated{
[super setEditing:editing animated:animated];
if([self isEditing]){
button.hidden = YES;
}else {
button.hidden = NO;
}
}
--- EDIT ----
-(void)setEditing:(BOOL)editing animated:(BOOL)animated{
[super setEditing:editing animated:animated];
if([self isEditing]){
button.hidden = YES;
[[self tableView] reloadData]; //shouldn't this make the button dissapear?
}else {
button.hidden = NO;
}
}
я обновил главный пост с тем, что я изменился. Основываясь на ваших отзывах, почему это не работает? Я делаю кнопку скрытой, а затем перезагружая представление, так что не следует скрывать кнопку? – EvilAegis
Вам нужно изменить 'viewForHeaderInSection', чтобы он работал. Если вы всегда воссоздаете кнопку в 'viewForHeaderInSection', тогда старая кнопка будет скрыта всегда. Изменение 'setEditing:' не может решить проблему. – Wain
Как мне создать заголовок один раз и вернуть тот же экземпляр, что и вы сказали? (на основе моего текущего viewForHeaderInSection – EvilAegis