如何在uitableview中启用和禁用单元格

时间:2012-04-02 10:10:12

标签: iphone

我有一个项目,我想在视图加载时在开头禁用UITableView的单元格,按下按钮后,应启用UITableView的单元格,并且应该工作正常。

我该怎么做?

5 个答案:

答案 0 :(得分:8)

你可以使用     table.allowsSelection = NO; 在viewwillappear方法中,然后在按钮点击事件中将其设为YES。

答案 1 :(得分:2)

如果您想禁用整个表格,那么您可以使用:

table.userInteractionEnabled = FALSE;

然后点击按钮:

table.userInteractionEnabled = TRUE;

答案 2 :(得分:1)

//In UIButton pressed event
 boolEnabled=YES; //Declare it in header file
[yourTableView reloadData]; //reload UITableView

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

      //After creating a cell

      if(boolEnabled==YES) //Will enable for any action
      {
            cell.userInteractionEnabled=YES;
      }
      else
      { //disable for any action
        cell.userInteractionEnabled=NO; //Default boolEnabled=NO;
      }     
 }

答案 3 :(得分:1)

我要做的是@property (nonatomic) BOOL tableIsActive

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath我会做

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(self.tableIsActive)
    {
         //style cells for enabled table
    }
    else
    {
         //style cells for enabled table
    }
}

然后在我的- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath我会

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(self.tableIsActive)
    {
         //handle selection
    }
    else
    {
         [tableView deselectRowAtIndexPath:indexPath animated:NO];
    }
}

然后我会有一个函数-(void) enableTable:(id)sender,它绑定到我的按钮

-(void) enableTable:(id)sender
{
    if(self.tableIsActive)
        self.tableIsActive = NO;
    else
        self.tableIsActive = YES;
}

然后启用调用[yourTable reloadData];

答案 4 :(得分:0)

你可以使用下面的代码来做,只需检查TableView delgate方法中的条件

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *categoryIdentifier = @"Category";
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    //Way to stop to choose the cell selection
     if(indexpath.row==0)
        {
         cell.selectionStyle = UITableViewCellSelectionStyleNone;
         Or 
         cell.userIneractionEnabled=False;
        }
       //while rest of the cells will remain active, i.e Touchable

    return cell;

}