Как передать состояние объекта кнопки другому классу, когда просмотр таблицы находится в режиме редактирования в iPhone? - PullRequest
0 голосов
/ 24 января 2012

У меня есть контроллер таблиц, который состоит из кнопки с изображением на ней и 2 меток. Когда я изменяю вид таблицы на режим редактирования, я хочу, чтобы моя кнопка выполняла действие, то есть когда я нажимаю на свою кнопку в режиме редактирования, она должна менять свое изображение. У меня есть класс editcontroller, когда по ссылке didselectrow первой таблицы открывается новый класс, т.е. editcontroller.

В этом классе контроллеров у меня есть кнопка переключения. Когда изображение кнопки первого просмотра таблицы изменяется на «ВЫКЛ», кнопка переключения в контроллере редактирования также должна быть изменена на «ВЫКЛ», а когда кнопка переключения контроллера редактирования установлена ​​на «ВКЛ», то изображение кнопки должно измениться на «ВКЛ». .

Это мой первый код для просмотра таблицы

- (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];   
        [mimageButton addTarget:self action:@selector(changeMapType:) forControlEvents: UIControlEventTouchUpInside]; 
    }

    [appDelegate.dateFormatter setDateFormat:@"hh:mm a"];
    cell.accessoryType = UITableViewCellAccessoryNone;

     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;
        editimage = YES;
        [self.mTableView reloadData];


    }
    else {

        editimage = NO;
        self.navigationItem.rightBarButtonItem = addButton;
        if (appDelegate.snoozearray)
        {
            [appDelegate.snoozearray release];
        }
        appDelegate.snoozearray = [[NSMutableArray alloc]init]; 
        [Alarm getInitialDataToDisplay:[appDelegate getDBPath]];
                [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];
}

1 Ответ

1 голос
/ 24 января 2012

Ваше объяснение не совсем понятно, но я понимаю, чего вы хотите достичь.

Вам следует использовать [NSNotification defaultCentre].

Вот как это работает.Предположим, у меня есть класс A, в котором у меня есть кнопка X, и я хочу изменить ее текст, когда в моем другом классе B. Я нажимаю, чтобы изменить Button.

Итак, это шаги:

1) InDidLoad A

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ChangeButton) name:@"Change Button" object:nil]

2) In Dealloc A

 [[NSNotificationCenter defaultCenter] removeObserver:self];

3)В B, когда вы нажимаете, чтобы изменить Button, после этого ставьте эту строку

[[NSNotificationCenter defaultCenter] postNotificationName:@"Change Button" object:nil userInfo:nil];

В конце, метод ChangeButton (в A) будет вызван, когда кнопка будет нажата в Bубедитесь, что вы определили метод ChangeButton в A .

Отправьте уведомление, когда значение переключателя изменится, а затем в другом представлении вы получите это уведомление ... и затем измените кнопку в ответ на уведомление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...