我是否正确地认为要将"on"的复选标记更改为"off",我必须更改CellAccessoryType之间none和之间checkmark的didSelectRowAtIndexPath?
因为我已经这样做但我注意到这个行为与iphone上自动锁定设置上的复选标记单元格完全相同.
或者还有其他一些方法可以处理检查标记吗?
我正在做一个tableview
我希望能够点击每个单元格,当点击时,它会在单元格上显示一个复选标记
现在我有一些代码可以使这个工作:
// checkmarks when tapped
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let section = indexPath.section
let numberOfRows = tableView.numberOfRowsInSection(section)
for row in 0..<numberOfRows {
if let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: row, inSection: section)) {
cell.accessoryType = row == indexPath.row ? .Checkmark : .None
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码只选择了一个区域内的1个单元格(我有5个区域)
我需要它在任何地方选择任何细胞
此外,当我上下拖动屏幕时,我会以复选标记丢失
viewcontroller.swift
class ViewController: UIViewController, UITableViewDataSource { //class and subclass |)
//---------------------------------------------------------------------------------------------------------------------------/
// Variable and constant, also IBAOutlet
let section1 =
["this is used",
"this is used to test",
"this …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
Run Code Online (Sandbox Code Playgroud)
但是当我运行应用程序时,我看不到复选标记.
然后我将背景颜色设置为黑色,我可以看到一个白色的复选标记.
如何将复选标记的颜色更改为蓝色等其他颜色?
Apple的iOS TableView和细胞重用正在扼杀我.我搜索,搜索和研究,但找不到好的文档或好的答案.问题是当TableView重新使用单元格时,在表格视图的下方单元格中重复设置在所选单元格上的Checkmarks(单元格附件)之类的内容.我知道细胞重用是由于内存限制而设计的,但是如果你有一个包含50个项目的列表,并且它开始在不需要它们的地方设置额外的复选标记,这使整个努力变得毫无用处.
我想要做的就是在我选择的单元格上设置复选标记.我已经尝试使用我自己的自定义单元类,以及由锅炉板TableView类生成的标准单元格,但它总是最终相同.
Apple甚至还有一个名为TouchCell的示例项目,您可以从开发中心下载,该项目应该显示使用左侧带有图像控件的自定义单元格设置复选标记的不同方式.该项目使用字典对象作为数据源而不是可静音数组,因此对于每个项目都有一个字符串值和bool检查值.此bool检查值应设置复选标记,以便它可以跟踪所选项目.只要使用15个以上的单元格填充TableView,此示例项目也会显示此愚蠢行为.单元格的重用开始设置不需要的复选标记.
我甚至尝试过为每个细胞使用一个真正独特的细胞标识符.因此,不是每个单元格都有@"Acell"之类的东西,我使用静态int,强制转换为字符串,以便细胞得到@"cell1",@"cell2"等.在测试期间,我可以看到数百个新细胞在哪里滚动期间生成,即使表只有30个项目.
它确实修复了复选标记重复问题,但我怀疑内存使用率过高.
当它们滚动回视图时,好像当前不在表的可视区域中的单元格会再次创建.
有没有人想出一个优雅的解决方案来解决这种恼人的行为?
我有一个UITableView包含复选框的每一行使用UITableViewCellAccessoryCheckmark.我无法弄清楚如何使用该didSelectRowAtIndexPath方法取消选中所有复选框.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *oldCell;
int count = [self.myTableRowNamesArray count];
for (NSUInteger i = 0; i < count; ++i) {
// Uncheck all checkboxes
// OF COURSE THIS DOESN'T WORK
// BECAUSE i IS AN INTEGER AND INDEXPATH IS A POINTER
FOO: oldCell = [myTableView cellForRowAtIndexPath:(int)i];
// GOOD CODE:
oldCell = [penanceOptionsTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
oldCell.accessoryType = UITableViewCellAccessoryNone;
}
UITableViewCell *newCell = [myTableView cellForRowAtIndexPath:indexPath];
newCell.accessoryType = UITableViewCellAccessoryCheckmark;
}
Run Code Online (Sandbox Code Playgroud) 我想使用Android OS drawables而不是提供我自己的.如何访问复选标记图标?我正在寻找没有rectagnle arround的复选标记.
我正在制作一个包含多行选项的tableview.所以,我使用了checkmark附件类型动作.我还需要编辑/重命名所选行中的文本.
基本上,我需要在左侧放置复选标记(复选框),在单元格的右侧放置详细信息,两者都是功能性的.
下面的代码是我所拥有的复选标记,当前复选标记出现在单元格的右侧.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
TSIPAppDelegate *appDelegate = (TSIPAppDelegate *)[[UIApplication sharedApplication]delegate];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *cellText = cell.textLabel.text;
if (cell.accessoryType==UITableViewCellAccessoryNone)
{
cell.accessoryType=UITableViewCellAccessoryCheckmark;
appDelegate.selectedFile = cellText;
if (prevSP!=indexPath.row) {
cell=[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:prevSP inSection:0]];
cell.accessoryType=UITableViewCellAccessoryNone;
prevSP=indexPath.row;
}
}
else if (prevSP!=indexPath.row){
cell.accessoryType=UITableViewCellAccessoryNone;
}
}
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
当选中一行时,应启用/禁用复选标记并选择公开按钮,它应打开一个新视图以编辑所选行.
我正在努力使这项工作,但似乎无法围绕这个想法.
到目前为止,我已经可以选择一个单元格,并且能够生成一个复选标记.然后,当您选择不同的单元格时,之前的复选标记将消失,并且tableview将在您刚刚选择的新单元格上创建一个新的复选标记.这一切都很美妙.
但是,我想要在选中具有复选标记的相同单元格的位置时,复选标记不会消失.但是,确实如此!
我已经尝试了大量的if语句,看看我是否可以弄清楚如何使这项工作,但无法找出解决方案.我需要在我的代码中重新排列,这可能是次要的.
这是我的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(self.checkedIndexPath)
{
UITableViewCell* uncheckCell = [tableView
cellForRowAtIndexPath:self.checkedIndexPath];
uncheckCell.accessoryType = UITableViewCellAccessoryNone;
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
if([self.checkedIndexPath isEqual:indexPath])
{
self.checkedIndexPath = nil;
}
else
{
cellCheck = [tableView cellForRowAtIndexPath:indexPath];
cellCheck.accessoryType = UITableViewCellAccessoryCheckmark;
self.checkedIndexPath = indexPath;
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSLog(@"%@", indexPath);
}
}
Run Code Online (Sandbox Code Playgroud) 我试图在选择菜单项时打上复选标记。我尝试给出 @State var selectedSort : Int = .zero 并给出 id(selectedSort) 但它不起作用。我怎么解决这个问题 ?
这是我的代码;
struct SortMenuPickerView : View {
@Binding var sortClicked : Bool
@ObservedObject var productListViewModel = ProductListViewModel()
@State var sortListArray : [ProductListSortAndFilterList]
var function: () -> Void
@Binding var sortId : String
var body : some View {
HStack(alignment: .center){
Spacer()
Menu {
ForEach(sortListArray,id:\.id){ item in
if item.id == "sort" {
ForEach(item.sortList ?? [],id:\.id) { data in
Button(action: {
sortId = (data.id ?? "")
self.function()
print("selected item is : …Run Code Online (Sandbox Code Playgroud) 单击按钮时,按钮的最左侧角应显示复选标记图标,当在同一按钮上单击时,复选标记图标应显示.在这种情况下,有些人会帮助我吗?
checkmark ×10
uitableview ×4
ios ×3
android ×2
iphone ×2
swift ×2
xcode ×2
button ×1
disclosure ×1
objective-c ×1
reusability ×1
swiftui ×1
tablecell ×1
tableview ×1