如何在导航栏中改变UISwitch状态时改变UITableView单元格



我有两个方法在我的UITableViewController类。

[self itemProcessor]; //First Method
[self listAllItems];  //Second Method

默认情况下,第一个方法将从我的viewDidLoad中调用,cellForRowAtIndexPath将根据我的第一个方法的查询填充。我在viewDidLoad中以编程方式创建了UISwitch,如下所示

UISwitch *barSwitch = [[UISwitch alloc] init];
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:barSwitch];
    [barSwitch addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; //To track switch state.
- (void)setState:(id)sender
{
    BOOL state = [sender isOn];
    NSString *rez = state == YES ? @"YES" : @"NO";
    NSLog(@"state is %@",rez);
}

当开关关闭时,我应该调用secondMethod([self listAllItems];)。我在viewDidLoad中初始化了所有数组。当我在viewDidLoad内以编程方式创建开关时,如何根据状态变化调用两个不同的查询?

有一个NSMutableArray,你将首先在viewDidLoad中使用它,然后在setState函数中更新该数组并调用tableView.reloadData()

- (void)setState:(id)sender
{
    BOOL state = [sender isOn];
    NSString *rez = state == YES ? @"YES" : @"NO";
    NSLog(@"state is %@",rez);
    if (state == YES) {
        // 
    }else{
        // myArray is declared in the .h file 
        myArray = [NSMutableArray arrayWithObjects:
                          @"str1", @"str2",
                          @"etc", nil];
        [self.tableView reloadData]; 
    }
} 

最新更新