我正在尝试一些MacOS编程,并且在理解绑定如何与NSPopupButton一起工作时遇到了一些麻烦。我对绑定到NSDictionaryController感兴趣(我认为我不需要中间的NSArrayController,但是如果那是最好的方法,那么我可以接受)。
我创建了一个控制器对象,该对象的属性为“ db”,其属性为“ species”,该属性为NSMutableDictionary。“种类”字典具有用于键的ID和用于值的“种类”对象。种类对象具有描述属性。在InterfaceBuilder中,我创建了MyController,NSDictionaryController和NSPopupButton。我想用Species.descriptions填充弹出窗口。选中后,我需要访问相应的ID。
我已经设置了NSDictionaryController,将“内容字典”绑定到具有模型键路径“ db.species”的MyController。到目前为止,使用NSPopupButton,我已经将“ Content Values”绑定到了NSDictionaryController,并且控制器键“ arrangedObjects”和Model Key Path设置为“ value.description”。
这似乎可以使列表填充。我的主要问题是,进行选择的最佳方法是什么。理想情况下,我想将选择连接到NSDictionaryController,以便可以使用NSDictionaryController访问选择。原因之一是可以将其他控件连接到NSDictionaryController来查看当前选择。如果没有,我应该连接到MyController中的属性还是其他?只在寻找最佳实践。我希望通过Interface Builder机制,以便可以轻松地在另一个具有不同视图的应用程序中重用模型和控制器设计。
使用Brian的答案作为指导进行更新:
NSPopupButton:将内容绑定到NSDictionaryController-> arrangedObjects-> value.description
将内容对象绑定到NSDictionaryController-> arrangedObjects-> key
将选定的索引绑定到NSDictionaryController-> selectionIndex
绑定NSDictionaryController-> db.species
一切似乎都正常。我可以使用[[[controller selectedObjects] lastObject] value]从控制器中获取对象。我相信,它位于带有键,值对的选定对象的数组中。
目前,我能够加载我创建的静态大小的纹理.在这种情况下,它是512 x 512.
此代码来自标头:
#define TEXTURE_WIDTH 512
#define TEXTURE_HEIGHT 512
GLubyte textureArray[TEXTURE_HEIGHT][TEXTURE_WIDTH][4];
Run Code Online (Sandbox Code Playgroud)
这是glTexImage2D的用法:
glTexImage2D(
GL_TEXTURE_2D, 0, GL_RGBA,
TEXTURE_WIDTH, TEXTURE_HEIGHT,
0, GL_RGBA, GL_UNSIGNED_BYTE, textureArray);
Run Code Online (Sandbox Code Playgroud)
这是我如何填充数组(粗略的例子,不是我的代码中的精确副本):
for (int i = 0; i < getTexturePixelCount(); i++)
{
textureArray[column][row][0] = (GLubyte)pixelValue1;
textureArray[column][row][1] = (GLubyte)pixelValue2;
textureArray[column][row][2] = (GLubyte)pixelValue3;
textureArray[column][row][3] = (GLubyte)pixelValue4;
}
Run Code Online (Sandbox Code Playgroud)
如何更改它以便不需要TEXTURE_WIDTH和TEXTURE_HEIGHT?也许我可以使用指针样式数组并动态分配内存...
我想我看到了问题,在C++中它无法真正完成.Budric指出的工作是使用单维数组,但使用所有3个维度乘以表示索引:
GLbyte *array = new GLbyte[xMax * yMax * zMax];
Run Code Online (Sandbox Code Playgroud)
要访问,例如1/2/3的x/y/z,您需要执行以下操作:
GLbyte byte = array[1 * 2 * 3];
Run Code Online (Sandbox Code Playgroud)
但问题是,我不认为该glTexImage2D功能支持这一点.任何人都可以想到一个可以使用这个OpenGL函数的解决方法吗?
注意OpenGL开发人员,这可以通过使用单维像素数组来克服......
[0]:列0> [1]:行0> [2]:通道0 ... n> [n]:行1 ... …
我有一个类来实例化一个COM exe进程.这堂课是
public class MyComObject:IDisposable
{
private bool disposed = false;
MyMath test;
public MyComObject()
{
test = new MyMath();
}
~MyComObject()
{
Dispose(false);
}
public double GetRandomID()
{
if (test != null)
return test.RandomID();
else
return -1;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (test != null)
{
Marshal.ReleaseComObject(test);
test = null;
}
disposed = true;
}
}
Run Code Online (Sandbox Code Playgroud)
我把它称之为如下
static void Main(string[] args)
{
MyComObject test = new MyComObject();
MyComObject test2 = …Run Code Online (Sandbox Code Playgroud) 我需要使用Selenium检查HTTP响应头的最佳方法.我环顾了Selenium文档并没有看到任何简单的方法.非常感谢帮助.
对于反黑客项目,我需要一个可以嗅探数据包的网络集线器 - 而不是交换机.很多产品都称自己为集线器,但实际上是交换机.谁能推荐一个真正的中心?
我正试图在iPhone上写一个动画,没有太大成功,崩溃似乎没什么用.
我想做的事情看似简单,创建一个UIImage,并将另一个UIImage的一部分绘制到其中,我对上下文和图层和东西有点混淆.
有人可以用示例代码解释如何编写类似的东西(高效)吗?
我有一个页面,其中有一个母版页.我是否将脚本和链接标签放在asp:content占位符或外部或者是否重要.
当我把它放在外面时,我得到以下警告:
只有内容控件才能直接包含在包含内容控件的内容页面中.
我有一个客户想要在他们的办公室使用Filemaker做一些事情,并且可能让我构建一个Web应用程序.
我最近一次使用,或想过,甚至听说过,Filemaker大概是在10年前,我似乎记得我不想用它作为复杂网络应用程序的后端,所以我在想尝试在MySQL上出售它们.
但是,他们的Filemaker数据库会与MySQL通信吗?任何想法如何最好地从Filemaker谈谈他们?
我需要匹配模式的正则表达式或为空.
现在我有一个表达......
"\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}/x"
Run Code Online (Sandbox Code Playgroud)
...匹配美国电话号码.但是,它对我正在测试的字符串是空的有效.如果字符串中包含任何值,则它必须与表达式匹配.
我有其他模式符合美国邮政编码等需要相同条件的模式.
在同一个表达式中实现此目的的最佳方法是什么?
澄清:我在Microsoft的验证应用程序块中使用了RegexValidator.使用它的一个例子如下:
[StringLengthValidator(0, 100, MessageTemplate = "Email must be between {3} and {5}")]
[RegexValidator(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", MessageTemplate = "Valid Email Required.")]
public string EmailAddress
{
get { return _EmailAddress; }
set { SetValue<string>(ref _EmailAddress, value); }
}
Run Code Online (Sandbox Code Playgroud)
这就是为什么我需要解决方案在一个表达式中.
有没有办法从区域或缓冲区建立电子邮件,设置收件人,然后用elisp代码发送邮件?
我已经配置emacs通过我的Gmail帐户发送邮件,我希望能够从elisp程序发送自己的电子邮件.使用的命令是邮件邮件.
asp.net ×1
c# ×1
c++ ×1
cocoa ×1
dispose ×1
elisp ×1
emacs ×1
email ×1
filemaker ×1
glteximage2d ×1
hardware ×1
http ×1
http-headers ×1
httpresponse ×1
iphone ×1
mysql ×1
networking ×1
objective-c ×1
opengl ×1
regex ×1
selenium ×1
uiimage ×1