我在viewcontroller中声明了一个名为:
的属性@property (nonatomic, strong) UISegmentedViewController *segmentedControl;
我有一个tableview,我将segmentedControl添加到第一个单元格中:
self.segmentedControl.frame = CGRectMake(10, 10, cell.frame.size.width - 20, 30);
self.segmentedControl.selectedSegmentIndex = self.segment;
[cell addSubview:self.segmentedControl];
我只想在第一个视图中使用此控件,当然,它会在我将单元格出列时进行回收。如何从后续单元格中删除segmentedControl?我无法调用[self.segmentedControl removeFromSuperView],因为这将从第一个单元格中删除它。
注意:我必须将其声明为属性,以便我可以从委托方法中引用它。
答案 0 :(得分:3)
最好的办法是不要通过删除/添加来移动您的控件。但要把它放在一个静态的单元格中。
这很容易实现。只需声明你的细胞:
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:... reuseIdentifier:nil
self.segmentedControl.frame = CGRectMake(10, 10, cell.frame.size.width - 20, 30);
self.segmentedControl.selectedSegmentIndex = self.segment;
[cell addSubview:self.segmentedControl];
重要的是将nil设置为reuseIdentifier。
因此细胞不会被回收。 此外,您可以建立与细胞的强大联系......
答案 1 :(得分:2)
你可以制作两种原型单元格,然后根据indexPath
加载你需要的单元格,或者为第一个单元格设置cell.segmentedControl.hidden
属性为NO
,并YES
1}}用于tableView:cellForRowAtIndexPath:
方法中的其余部分。
答案 2 :(得分:0)
if (indexPath.row == 0)
[cell addSubview:self.segmentedControl];
else if(segmentedControl.superView!=nil)
[self.segmentedControl removeFromSuperView]