在我的cocoa应用程序中,我需要一个用于NSTableView的自定义NSCell.此NSCell子类包含用于处理单击的自定义NSButtonCell(以及用于文本内容的两个或三个NSTextFieldCells).您将在下面找到我的代码的简化示例.
@implementation TheCustomCell
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
// various NSTextFieldCells
NSTextFieldCell *titleCell = [[NSTextFieldCell alloc] init];
....
// my custom NSButtonCell
MyButtonCell *warningCell = [[MyButtonCell alloc] init];
[warningCell setTarget:self];
[warningCell setAction:@selector(testButton:)];
[warningCell drawWithFrame:buttonRect inView:controlView];
}
Run Code Online (Sandbox Code Playgroud)
我坚持的问题是:在这个NSCell中使用该按钮(更确切地说:NSButtonCell)以正常工作的最佳/正确方法是什么?"工作"表示:触发指定的操作消息并在单击时显示备用图像.开箱即用,按钮在单击时不执行任何操作.
很难找到关于这个主题的信息/读物.我在网上找到的唯一帖子指出我要实施
- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)untilMouseUp;
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?实现trackMouse:在我的包含NSCell中?然后将事件转发给NSButtonCell?我本来期望NSButtonCell本身知道在点击它时该做什么(我看到trackMouse:方法更多的是在cunjunction,真正跟踪鼠标移动 - 而不是作为'标准'点击行为的训练轮).但是当它被包含在一个单元格本身时似乎不会这样做......似乎我还没有掌握自定义单元格的大图,但是;-)
如果有人能够根据自己的经验回答这个问题(或指向我的某些教程等),我会很高兴 - 告诉我我是否走在正确的轨道上.
托比,提前谢谢
JavaFX TableView有一个占位符属性,它基本上是在它为空时Node显示的TableView.如果此属性设置为null(其默认值),则它显示为一个Label或其他一些基于Node"表中没有内容"的文本.
但是如果表中有任何数据行,则占位符将Node消失,并且整个垂直空间TableView将填充行,如果没有足够的数据填充整个表,则包括空行.
这些空行是我想要的,即使表是空的.换句话说,我根本不想使用占位符.有谁知道我怎么做到这一点?
我宁愿不做什么事情,就像TableView在它应该实际上是空的时候放一个空洞的行.
DetailViewController:
@IBOutlet var selectedBundesland: UILabel!
Run Code Online (Sandbox Code Playgroud)
TableViewController:
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "BackToCalculator") {
var vc:FirstViewController = segue.destinationViewController as FirstViewController
vc.selectedBundesland.text = "Test"
}
Run Code Online (Sandbox Code Playgroud)
IBOutlet已连接!
错误:致命错误:在解包可选值时意外发现nil
我阅读了关于Optionals的多个页面,但我不知道我的问题的答案.
您是否需要有关我的项目的更多信息?
我正在尝试在表格视图的第一个单元格的顶部添加图像.如何让表格视图有一个上边距?现在,图像只是与tableview重叠.我试图让表格视图稍微下降.我不想让它变小或类似的东西.我只想在tableview的顶部添加一个按钮.
//
// usersVC.swift
// CaastRun
//
// Created by Computer on 5/23/15.
// Copyright (c) 2015 Caast. All rights reserved.
//
import UIKit
class usersVC: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var resultsTable: UITableView!
var resultsNameArray = [String]()
var resultsUserNameArray = [String]()
var resultsImageFiles = [PFFile]()
override func viewDidLoad() {
super.viewDidLoad()
let theWidth = view.frame.size.width
let theHeight = view.frame.size.height
resultsTable.frame = CGRectMake(0, 0, theWidth, theHeight)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be …Run Code Online (Sandbox Code Playgroud) 在JavaFX 2中,使用CSS,是否可以创建2种颜色的背景?想象一下,例如TableCell高度为10像素.我希望前2 px(垂直)为红色,其余8 px(垂直)应保持默认背景颜色.在JavaFX 2中使用CSS是否可行?怎么样?
例:
原始背景:

期望的结果:
(上面的2个像素被红色代替)
感谢您对此的任何暗示!
我知道Task有一个方法updateProgress,我需要将progressbar绑定到任务,但是我不能这样做,因为我没有进度条作为对象.
我的程序有一个TableView.用户输入下载URL并单击下载在TableView中创建的新行.Row有一些信息和进度条列.然后我开始一个新线程 - 任务.所有下载都在哪里,我需要以某种方式更新该行的进度条.
我尝试将SimpleDoubleProperty绑定到Task但它不更新进度条...
我有一个应用程序,我正在尝试完全适应我想要的
我一直在关注Seemu Apps的Youtube教程,但是我需要添加一个可选的ViewController来完成它
这个应用程序有2个tableViews显示车辆,如果我们点击第一个tableView的一行,然后第二个tableView将显示所选车辆的列表.
这是我们到现在为止所拥有的:(图片链接,因为我在stackOverFlow上没有得到十分的声誉)
http://subefotos.com/ver/?65ba467040cb9280e8ec49644fd156afo.jpg
一切都运行完美,但我希望能够在可选的detailViewController中显示信息(带有每个车辆的详细描述的标签和更大的图像),具体取决于我们在secondTableViewControlle(或应用程序中的modelViewController)中单击的车辆究竟我是如何在tableViews之间的教程中遵循的
我知道我们需要通过prepareForSegue方法传递数据,我已经理解了这在制作教程中的步骤但我们有2个tableviewControllers
例如:如果我们想要显示最后一个viewController,其中包含法拉利458的信息以及这款车的精彩图片
我们需要做些什么才能显示每辆车的信息?
PD:我是编程领域的初学者,也许我需要以非常简单的方式看待它
整个代码:
ViewController.swift
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var selMake = String()
@IBOutlet var tableView : UITableView!
var transportData : [String] = ["Car", "Plane", "Motorcycle", "Truck" , "Train", "Bicycle" , "Helicopter"]
//////////////////////////////////////////
//viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
//Register custom cell
var nib = UINib(nibName: "customCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "cell")
}
//Numbers of rows in Section
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return …Run Code Online (Sandbox Code Playgroud) 问题
我想动态地向TableView添加数据并滚动到新数据的位置.但是当TableView中的行达到ViewPort大小时,我会在控制台中得到它:
2015年4月18日上午9:14:34 com.sun.javafx.scene.control.skin.VirtualFlow addTrailingCells INFO:index超过maxCellCount.检查类javafx.scene.control.TableRow的大小计算
所以我想我做错了什么.我所做的只是使用Oracle TableView示例并添加:
// button to add new data
Button bt = new Button( "Add");
bt.setOnAction(e -> {
// insert new item
int i = data.size() + 1;
Person person = new Person( "Name " + i, "Name " + i, "Mail " + i);
data.add( person);
// scroll to new item
table.scrollTo( person);
});
Run Code Online (Sandbox Code Playgroud)
使用时会发生同样的情况
table.getItems().add( person);
Run Code Online (Sandbox Code Playgroud)
而不是修改列表.
罪魁祸首是scrollTo方法.将行索引与scrollTo方法一起使用时,会出现相同的信息/错误.
题
如何正确地向TableView添加新项目,以便不显示信息/错误?
码
这是一个完整的例子.该表已预先填写.如果按"添加"按钮,则达到视口大小,并在控制台中显示信息(或错误?).
public class TableViewSample extends Application {
private TableView<Person> table = new …Run Code Online (Sandbox Code Playgroud) 我有一个 TableViewCell 和两个按钮来切换不同的约束。
我想更新它的高度约束和单元格高度。
就像
当我点击buttonB时跟随pic1一样,视图会像
pic2一样改变然后我点击buttonA,视图将回到pic1
我尝试修改约束,但我无法更新高度。
对我有什么想法或答案吗?
谢谢
图片1
图片2
这是代码:
class CellContainView: UIView {
let buttonA: UIButton = { () -> UIButton in
let ui = UIButton()
ui.titleLabel?.numberOfLines = 0
ui.setTitle("Click\nA", for: .normal)
ui.backgroundColor = UIColor.blue
return ui
}()
let buttonB: UIButton = { () -> UIButton in
let ui = UIButton()
ui.titleLabel?.numberOfLines = 0
ui.setTitle("Click\nB", for: .normal)
ui.backgroundColor = UIColor.gray
return ui
}()
let buttonC: UIButton = { () -> UIButton in
let ui = UIButton() …Run Code Online (Sandbox Code Playgroud)