Swift : Shinobi Grid 中的自动文本
Swift : Auto Text in Shinobi Grid
我正在使用 Shinobi Data Grid,但我遇到了一个小问题,因为很难找到关于 Shinobi Grid 的 Swift 示例或问题。在我的代码片段下面:
var grid: ShinobiDataGrid?
grid = ShinobiDataGrid(frame: self.view.bounds)
grid?.frame = CGRect(x: 0, y: 120, width: (screenWidth), height: 600)
theme = SDataGridTheme()
theme?.iOS7Arrows = true
theme?.hideVerticalGridlines = false
grid?.apply(theme)
self.view.addSubview(grid!)
.........
addColumn(grid!, title: "Floor", width: 100, alignment: .right, alignmentHeader: .right)
grid?.numberOfFrozenColumns = 2
grid?.layer.borderWidth = 1
grid?.defaultCellStyleForHeaderRow.backgroundColor = UIColor(hex: "#1A237E")
grid?.defaultCellStyleForHeaderRow.textColor = UIColor.white
grid?.defaultCellStyleForHeaderRow.font.withSize(5)
grid?.dataSource = self
grid?.delegate = self
........
func shinobiDataGrid(_ grid: ShinobiDataGrid!, prepareCellForDisplay cell: SDataGridCell!) {
let textCell = cell as! SDataGridTextCell
// let textCell = cell as! SDataGridMultiLineTextCell
var dataRow: [AnyHashable: Any]?
dataRow = filteredDataRoomingList?[cell.coordinate.row.rowIndex] as? [AnyHashable: Any]
textCell.sizeToFit()
if (searchBarActive) {
dataRow = filteredSearchDataRoomingList?[cell.coordinate.row.rowIndex] as? [AnyHashable: Any]
}
else {
dataRow = filteredDataRoomingList?[cell.coordinate.row.rowIndex] as? [AnyHashable: Any]
}
if textCell.coordinate.column.tag == 0 {
textCell.textField.text = (String(dataRow?["floor"] as! Int))
// gridMultiLine.textLabel.text = (String(dataRow?["floor"] as! Int))
}
}
我希望我的单元格在其内容中显示全文(换行内容)而不是用....截断文本。
我读过 this 但我不知道这个块,因为它在 Objective C 中:
SDataGridColumn *nameColumn = [[SDataGridColumn alloc] initWithTitle:@"Forename" cellType:[SDataGridMultiLineTextCell class]];
nameColumn.editable = YES;
nameColumn.width = @250;
[self.shinobiDataGrid addColumn:nameColumn];
任何建议和回答都会对我有所帮助。提前致谢
我在代码下方创建了 this 的函数基础:
func addColoumn(_ grid: ShinobiDataGrid, title: String, width: CGFloat, tag: Int, alignment: NSTextAlignment) {
let screenSize = UIScreen.main.bounds
let screenWidthInt = screenSize.width - CGFloat(arc4random_uniform(UInt32(screenSize.width)))
let column = SDataGridColumn(title: title, cellType: SDataGridMultiLineTextCell.self)
column?.width = (Int(screenWidthInt / width) as NSNumber) /*width as NSNumber!*/
column?.tag = tag
column?.cellStyle.textAlignment = alignment
column?.headerCellStyle.textAlignment = alignment
grid.addColumn(column)
}
数据源prepareCellForDisplay
变成了这样:
func shinobiDataGrid(_ grid: ShinobiDataGrid!, prepareCellForDisplay cell: SDataGridCell!) {
let dataCell = cell as! SDataGridMultiLineTextCell
if cell.coordinate.column.tag == 0 {
dataCell.sizeToFit()
dataCell.textLabel.text = "msadimfodvnuonvosvndvdivndlvsndvmvnlcvnoidn odnosdvk odkmvosdk sodimdokvs kmdsdokv "
}
if cell.coordinate.column.tag == 1 {
dataCell.sizeToFit()
dataCell.textLabel.text = "msadimfodvnuonvosvndvdivndlvsndvmvnlcvnoidn odnosdvk odkmvosdk sodimdokvs kmdsdokv sdmfdfkm sdlfkdmlf dosfod domdso os "
}
}
我正在使用 Shinobi Data Grid,但我遇到了一个小问题,因为很难找到关于 Shinobi Grid 的 Swift 示例或问题。在我的代码片段下面:
var grid: ShinobiDataGrid?
grid = ShinobiDataGrid(frame: self.view.bounds)
grid?.frame = CGRect(x: 0, y: 120, width: (screenWidth), height: 600)
theme = SDataGridTheme()
theme?.iOS7Arrows = true
theme?.hideVerticalGridlines = false
grid?.apply(theme)
self.view.addSubview(grid!)
.........
addColumn(grid!, title: "Floor", width: 100, alignment: .right, alignmentHeader: .right)
grid?.numberOfFrozenColumns = 2
grid?.layer.borderWidth = 1
grid?.defaultCellStyleForHeaderRow.backgroundColor = UIColor(hex: "#1A237E")
grid?.defaultCellStyleForHeaderRow.textColor = UIColor.white
grid?.defaultCellStyleForHeaderRow.font.withSize(5)
grid?.dataSource = self
grid?.delegate = self
........
func shinobiDataGrid(_ grid: ShinobiDataGrid!, prepareCellForDisplay cell: SDataGridCell!) {
let textCell = cell as! SDataGridTextCell
// let textCell = cell as! SDataGridMultiLineTextCell
var dataRow: [AnyHashable: Any]?
dataRow = filteredDataRoomingList?[cell.coordinate.row.rowIndex] as? [AnyHashable: Any]
textCell.sizeToFit()
if (searchBarActive) {
dataRow = filteredSearchDataRoomingList?[cell.coordinate.row.rowIndex] as? [AnyHashable: Any]
}
else {
dataRow = filteredDataRoomingList?[cell.coordinate.row.rowIndex] as? [AnyHashable: Any]
}
if textCell.coordinate.column.tag == 0 {
textCell.textField.text = (String(dataRow?["floor"] as! Int))
// gridMultiLine.textLabel.text = (String(dataRow?["floor"] as! Int))
}
}
我希望我的单元格在其内容中显示全文(换行内容)而不是用....截断文本。
我读过 this 但我不知道这个块,因为它在 Objective C 中:
SDataGridColumn *nameColumn = [[SDataGridColumn alloc] initWithTitle:@"Forename" cellType:[SDataGridMultiLineTextCell class]];
nameColumn.editable = YES;
nameColumn.width = @250;
[self.shinobiDataGrid addColumn:nameColumn];
任何建议和回答都会对我有所帮助。提前致谢
我在代码下方创建了 this 的函数基础:
func addColoumn(_ grid: ShinobiDataGrid, title: String, width: CGFloat, tag: Int, alignment: NSTextAlignment) {
let screenSize = UIScreen.main.bounds
let screenWidthInt = screenSize.width - CGFloat(arc4random_uniform(UInt32(screenSize.width)))
let column = SDataGridColumn(title: title, cellType: SDataGridMultiLineTextCell.self)
column?.width = (Int(screenWidthInt / width) as NSNumber) /*width as NSNumber!*/
column?.tag = tag
column?.cellStyle.textAlignment = alignment
column?.headerCellStyle.textAlignment = alignment
grid.addColumn(column)
}
数据源prepareCellForDisplay
变成了这样:
func shinobiDataGrid(_ grid: ShinobiDataGrid!, prepareCellForDisplay cell: SDataGridCell!) {
let dataCell = cell as! SDataGridMultiLineTextCell
if cell.coordinate.column.tag == 0 {
dataCell.sizeToFit()
dataCell.textLabel.text = "msadimfodvnuonvosvndvdivndlvsndvmvnlcvnoidn odnosdvk odkmvosdk sodimdokvs kmdsdokv "
}
if cell.coordinate.column.tag == 1 {
dataCell.sizeToFit()
dataCell.textLabel.text = "msadimfodvnuonvosvndvdivndlvsndvmvnlcvnoidn odnosdvk odkmvosdk sodimdokvs kmdsdokv sdmfdfkm sdlfkdmlf dosfod domdso os "
}
}