передача значения кнопки переключения для переключения состояния кнопки в другом классе в iphone - PullRequest
0 голосов
/ 27 января 2012

У меня есть приложение, в котором у меня есть 2 контроллера табличных представлений. В первом табличном представлении у меня есть кнопка, созданная в моем cellforRowAtIndexPath моего первого табличного представления. Изначально я установил для изображения кнопки значение «ON», что означает, что мой будильник включен. Затем, когда я нажимаю кнопку «Изменить», мой вид таблицы меняется на режим редактирования, где я могу изменить изображение кнопки на «OFF». Я хочу, чтобы действие моей кнопки должен вызываться, когда просмотр таблицы входит в режим редактирования. Это код, который я написал.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
       NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d%d", indexPath.section, indexPath.row];
    appDelegate = (StopSnoozeAppDelegate*)[[UIApplication sharedApplication]delegate];
    TAlarmCell *cell =(TAlarmCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[TAlarmCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        mimageButton = [UIButton buttonWithType:UIButtonTypeCustom];
        mimageButton.frame=CGRectMake(10, 20, 20, 20);   
        mimageButton.tag = 1;     
        [mimageButton setImage:[UIImage imageNamed:@"alarm_ON.png"] forState:UIControlStateNormal]; 
        [mimageButton setImage:[UIImage imageNamed:@"alarm_OF.png"] forState:UIControlStateSelected]; 
        [cell.contentView addSubview:mimageButton];   
    }
    cell.editingAccessoryType = UITableViewCellAccessoryDisclosureIndicator;

 return cell;
}

// это мой код редактирования.

-(void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];
    [mTableView setEditing:editing animated:YES];
    if (editing)
    {
        [mimageButton addTarget:self action:@selector(changeMapType:) forControlEvents: UIControlEventTouchUpInside]; 
        self.navigationItem.rightBarButtonItem = nil;

    }
    else {
        self.navigationItem.rightBarButtonItem = addButton;
        [self.mTableView reloadData];
    }

}

// это действие моей кнопки

-(void)changeMapType:(UIButton *)sender
{
    NSIndexPath *indexPath =[self.tableView indexPathForCell:(UITableViewCell *)[[sender superview] superview]]; 

    NSUInteger row = indexPath.row; 
    NSLog(@"row...%d",row);
    appDelegate.changeimagetype = !appDelegate.changeimagetype;
    sender.selected = appDelegate.changeimagetype;
    [self.tableView reloadData];
}

Но проблема здесь в том, что когда я нажимаю на кнопку редактирования, и таблица переходит в режим редактирования, changeMapType: действие не вызывается, и мое изображение не изменяется.

1 Ответ

0 голосов
/ 27 января 2012

Можете ли вы дать мне некоторые подробности о

, где вы устанавливаете этот флаг

if (editing)

и для какого действия пользователя вы хотите, чтобы этот метод вызывался ..?

-(void)changeMapType:(UIButton *)sender

Если вы хотите, чтобы вам позвонили сразу после входа в режим редактирования, вы можете использовать следующий метод

[self performSelector:@selector(changeMapType:)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...