2017-01-08 37 views
0

我在我的应用程序的菜单中有一个UITableView。该表在开始时具有特定数量的单元格(行)。添加不同类型的单元格到UITableView

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return 5; 
} 

当例如具有indexPath.row = 1被点击的单元,我必须添加一些新的细胞(可以说3个细胞)该细胞后(因此在索引2,3和4)。当这个单元格第二次点击时,我必须删除添加的单元格。问题是要添加的单元格具有不同的类型(另一个类)。我搜索了如何添加/删除单元格,并且发现我可以使用insertRowsAtIndexPaths和删除单元格。但是,如何指定单元格的类型然后返回? 这是我的手机的按钮目标:

[cell.showDetail addTarget:self action:@selector(btnSowDetailClicked) forControlEvents:UIControlEventTouchUpInside]; 

我不知道要放什么东西在选择做什么,我形容:

-(void) btnSowDetailClicked { 
    // ???? 
} 

而且我怎么能在设定的numberOfRowsInSection选择?

回答

-1

当您需要添加单元格,初始化并将其存储到数组时,您可以初始化一个可变阵列来存储您的单元格,无论您的单元格的类型多少。

numberOfRows方法

,只是在cellforrowatindexpath方法return array.count;

,从你的阵列获得的细胞,然后返回小区。

0

有你需要跟踪的,如果你是不是已经几件事情 -

  1. 按钮的状态
  2. 该类电池的数据源返回
  3. 细胞的数量

一个建议是管理一个的NSMutableArray的NSString的(其重新呈现单元类返回)

在按钮操作中,执行以下操作,其中NSStrings表示特定索引(例如, @ “的UITableViewCell” 或@ “MyCustomCell” 等) -

-(void) btnSowDetailClicked { 
    // Toggle button state - prob better to persist in property BOOL cellButtonState 
    cellButtonState = !cellButtonState; 
    // update data source(s) accordingly 
    if (cellButton.selected) { 
      // add NSStrings to data source array 
      // create array of NSIndexPaths to pass to table view 
      // update UITableView with - (void)insertRowsAtIndexPaths:withRowAnimation: 
    } 
    else { 
      // remove NSStrings from data source array 
      // create array of NSIndexPaths to pass to table view 
      // update UITableView with - deleteRowsAtIndexPaths:withRowAnimation: 
    } 
} 

作为有关上述的UITableView方法文档中所述 -

的UITableView立即调用相关委托和数据源的方法之后获取可见细胞的细胞和其他内容。

,因此DataSource可以为行数返回[dataSourceArray计数]。要获得正确的类,请返回单元格的位置,在cellForRowAtIndexPath从indexPath中的数据源数组中获取NSString对象。行并使用NSClassFromString来获取单元格的类!

相关问题