gpt4 book ai didi

xcode - 根据核心数据读取的特定顺序将列添加到表中

转载 作者:行者123 更新时间:2023-12-03 17:55:17 25 4
gpt4 key购买 nike

情况:

有两个表,一个主表和一个辅助表。主表连接到核心数据数据库。我已经按照我想要的方式设置了核心数据和主表..一切工作正常,我对此感到高兴。

现在我必须将列添加到第二个表中。基本上第二个表格 View 有一个列(图像和文本表格单元格 View )。我需要为第一个 TableView (与核心数据的数组 Controller 连接的 TableView )的每一行添加一列作为复选框列,并且该列的标题应该将值存储在arrangedobjects.header中。但这不是它。这些新列应按特定顺序排列:升序,基于第一个表中的arrangedobjects.order 值。

只要我点击界面上的更新按钮,就应该执行此操作。

所以问题是:

-如何根据第一个 TableView 的行数向第二个 TableView 添加列?

-如何根据第一个 TableView 中存储在列中的值对列进行排序?

-如何以编程方式将该列设置为复选框列?

-如何以编程方式将列标题设置为存储在数组 Controller 中的值?

所需结果的示例:

表 1(连接到核心数据)

 somecolumn | header | order | somecolumn | somecolumn
------------------------------------------------------
text hd1 3 text text
text hd3 1 text text
text hd4 7 text text

表2的结构:(除第一个之外的所有复选框列,列顺序基于表1的“顺序”字段,列标题基于表1的“标题”字段)

 existingcolumn | hd3 | hd1 | hd4

再次强调,请尽可能清晰。

谢谢

最诚挚的问候

伊戈尔

我过去已经提出过类似的问题,但是这个问题的内容更多,这就是我开始一个新问题的原因。我在网上搜索,没有找到这个具体问题的答案。另请记住,我是 Objective-C/cocoa 编程的新手,所以请明确回答。

最佳答案

-如何根据第一个表格 View 的行数向第二个表格 View 添加列?

创建动态列。您可以在 rows.count 循环内使用 [tableView addTableColumn];

-如何根据第一个表格 View 中存储在列中的值对列进行排序?

Order 是指...OrderBy?已排序,您永远不会对 TableView 进行排序,而是对模型数组进行排序。对数组进行排序并填充表格。

-如何以编程方式将该列设置为复选框列?

对于复选框实现,请查找 project在这里。

在您想要复选框的列中绘制一个 checkBoxCell。或者您可以通过编程来完成。

我是通过IB做的。

您需要创建一个数组来存储每个(行数)复选框的状态。

- (id)init {
self = [super init];
if (self) {

states=[[NSMutableArray alloc] initWithObjects:@"1", @"0", @"1", nil];
}
return self; }



- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
NSLog(@"Num of rows---- %ld", [names count]);
return [names count];
}

检查 tableIdentifier 的值是否为“check”。

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
if ([[tableColumn identifier] isEqualTo:@"name"]) {
return [names objectAtIndex:row];
}
else if ([[tableColumn identifier] isEqualTo:@"check"]) {

return [states objectAtIndex:row];
}
else if ([[tableColumn identifier] isEqualTo:@"states"]) {
return [states objectAtIndex:row];
}
return 0;
}

根据开/关更新复选框的值。

- (void)tableView:(NSTableView *)tableView setObjectValue:(id)value forTableColumn:(NSTableColumn *)column row:(NSInteger)row {          
[states replaceObjectAtIndex:row withObject:value];
[tableView reloadData];
}

-如何以编程方式将列标题设置为存储在数组 Controller 中的值?

使用这个类别,或者可以使用一行语句:

@interface NSTableColumn(SetTitle)

- (void)setTitle:(NSString *)inTitle
{
[[self headerCell] setStringValue:inTitle] ;
[[[self tableView] headerView] setNeedsDisplay:YES];
}

@end

编辑:

以编程方式复选框:

- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
NSButtonCell *cell=[[NSButtonCell alloc] init];
NSString *strDisplayPlaylistName;
strDisplayPlaylistName=[playListNameArray objectAtIndex:row];
[cell setTitle:strDisplayPlaylistName];
[cell setAllowsMixedState:YES];
[cell setButtonType:NSSwitchButton];
return cell;
}


- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
NSCell *aCell = [aTableColumn dataCellForRow:rowIndex];
[aCell setNextState];
//NSCell *aCell=[aAddedCells objectAtIndex:rowIndex];
//[aCell setNextState];
}

关于xcode - 根据核心数据读取的特定顺序将列添加到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14583885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com