传递切换按钮值以切换iphone中另一个类的按钮状态

时间:2012-01-27 06:21:13

标签: iphone objective-c ios

我有一个应用程序,其中我有2个tableview控制器。在第一个tableview中,我在我的第一个tableview的cellforRowAtIndexPath中创建了一个按钮。最初我已将按钮图像设置为“ON”图像,这意味着我的闹钟已开启。然后,当我点击编辑按钮时,我的tableview更改为editmode,我可以将我的按钮图像更改为“OFF”。我希望我的按钮操作当tableview进入编辑模式时应该调用。这是我写的代码。

- (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];
}

但问题是当我点击编辑按钮并且tableview进入编辑模式时,changeMapType:动作没有被调用,我的图像也没有改变。

1 个答案:

答案 0 :(得分:0)

你可以给我一些关于

的细节吗?

你设置这个标志的地方

if (editing)

并且用户的动作是否希望此方法被调用..?

-(void)changeMapType:(UIButton *)sender

如果你想在进入编辑模式后立即被调用,你可以使用以下方法

[self performSelector:@selector(changeMapType:)];