我在表格视图单元格中动态创建了UIButton
。但是有一个问题, - 我无法访问按钮或它的发送方法。
当我点击一个按钮时,它会给出错误的标签,或者某个时候它不可点击。我已经在tableview单元格中的for()循环的帮助下创建了按钮a。我认为主要的问题是我在for()循环中创建了按钮。任何人都可以帮我解决这个问题吗?
我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = (UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIView *viewDisplaySize;
if (cell == nil)
{
NSString *myString =@"1111111:2222222:333333:44444:55555:6666:777777:888888888888:9999999999" ;
NSArray *myWords = [myString componentsSeparatedByString:@":"];
for (int i=0; i < [myWords count]; i++) {
//Create a button but can't able to get a correct tag
/// Or some time it's not click able
}
整个代码--- link of full code
答案 0 :(得分:0)
基本问题是您添加子视图的方式不是最好的方法。通过在if(cell == nil)子句中添加子视图,并在其中设置标记值,标记值将永远不会更改。重复使用单元格时,标记仍将基于创建它的行,而不是现在出现重用单元格的位置。
创建单元格的更好方法是在自定义单元格类的init方法中添加所需的任何子视图。这会清除cellForRowAtIndexPath中的代码,因此它只包含填充单元格所需的代码。如果单元格完全由代码构成(没有xib或故事板用于其视图),那么您应该使用registerClass:forCellReuseIdentifier:注册类(通常在表视图控制器的viewDidLoad中完成)。然后,在cellForRowAtIndexPath中,不需要检查单元格是否为零,因为它永远不会。您仍然希望在cellForRowAtIndexPath中设置按钮的操作和标记,但现在当重复使用该单元时,它将被重置为正确的行。