在Windows平台上编写Objective-C的最佳方法是什么?
Cygwin和gcc?有没有办法可以将它集成到Visual Studio中?
沿着这些方向 - 是否有任何关于如何链接和使用Windows SDK的建议.它是一个不同的野兽,但我知道我可以在Windows DLL中编写汇编和链接,让我可以访问这些调用,但我不知道如何做到这一点,没有谷歌搜索和零碎的方向.
是否有人知道一个好的在线或书籍资源来做或解释这些事情?
在jQuery中,是否可以在调用(或任何其他类型的迭代回调)完成后调用回调或触发事件..each()
例如,我想要"淡化和删除"来完成
$(parentSelect).nextAll().fadeOut(200, function() {
$(this).remove();
});
Run Code Online (Sandbox Code Playgroud)
在做一些计算并在之后插入新元素之前$(parentSelect).如果jQuery仍然可以看到现有元素并且睡眠/延迟一些任意时间(每个元素200个)似乎是一个脆弱的解决方案,那么我的计算是不正确的.
我可以很容易地.bind()为事件回调提供必要的逻辑但是我不确定如何.trigger()在上面的迭代完成之后干净地调用它.显然,我不能在迭代中调用触发器,因为它会多次触发.
在这种情况下$.each(),我考虑在数据参数的末尾添加一些东西(我将在迭代体中手动查找),但我不想被迫这样,所以我希望有一些其他的优雅关于迭代回调控制流的方法.
如果我创建一个UITableViewController - 向下钻取按预期工作.如果用户选择了一个单元格并且我实现了'didSelectRowAtIndexPath',则单元格会闪烁蓝色并显示下一个视图.
但是,如果我包含一个"编辑"按钮(self.navigationItem.rightBarButtonItem = self.editButtonItem),当用户单击"编辑"时 - 模式正确更改(所有单元格缩进并绘制适当的editAccessory),...但是,细胞不再是"可选择的".
IE:在编辑模式下,当用户选择一个单元格时,没有任何事情发生.没有蓝色闪光.没有调用'didSelectRowAtIndexPath',没有.
当我打开iPhone示例'iPhoneCoreDataRecipes'(在SDK文档中提供)时,果然,他们有一个RecipeDetailViewController - 当进入编辑模式时,仍然允许你向下钻取.我已经下载并构建了他们的示例,它运行得很好.我似乎无法在他们的代码中发现任何诡计,以便在编辑模式行为时启用这个"可选择的单元格",但是当我这样做时,我只是没有得到它.
思考?
非常感谢,
-Luther
我们使用的Weblogic服务器已配置为允许JNDI数据源名称,如"appds".
对于开发(localhost),我们可能正在运行Tomcat,并且当在server.xml的<context>部分中声明时,Tomcat将在JNDI树中的"java:comp/env/jdbc/*"上挂起JNDI数据源.
问题:在Weblogic中,JNDI查找是"appds",而在Tomcat中,似乎我必须提供正式的"java:comp/env/jdbc/appds".我担心Tomcat版本是一个隐含的标准,但不幸的是,我不能改变Weblogic的配置...所以这意味着我们最终得到两个不同的spring配置文件(我们使用的是spring 2.5)来促进不同的环境.
有没有一种优雅的方式来解决这个问题.我可以直接在Tomcat中查看JNDI名称吗?Spring可以在两个地方都有名字和外观吗?谷歌搜索或建议会很棒.
我已经创建了一个带有Core Data模型的项目.应用程序查找模型文件(.momd)并运行正常.
不幸的是,单元测试不断返回null:
NSURL *dataModelURL = [[NSBundle mainBundle] URLForResource:@"myDataModel" withExtension:@"momd"];
Run Code Online (Sandbox Code Playgroud)
我可以在主目标和单元测试目标的Compile Sources目录中看到myDataModel.xdatamodeld文件夹和文件 - 但这似乎不够.我在单元测试目标中还缺少什么?
谢谢,-Luther
我创建了一个UISegmentedControl并成功将其附加到我的navigationItem.tableView.
但是当我尝试将它附加到UIToolbar时,它会爆炸.
我确定我之前在工具栏上看过UISegementedControls - 但似乎无法让它工作.思考?
// works
NSArray *statusItems = [[NSArray alloc] initWithObjects:@"one", @"two", nil];
statusSegments_ = [[UISegmentedControl alloc] initWithItems:statusItems];
self.navigationItem.titleView = statusSegments_;
// doesn't work
NSArray *statusItems = [[NSArray alloc] initWithObjects:@"one", @"two", nil];
statusSegments_ = [[UISegmentedControl alloc] initWithItems:statusItems];
NSArray *toolbarItems = [[NSArray alloc] initWithObjects:statusSegments_, nil];
self.toolbarItems = toolbarItems;
[toolbarItems release];
Run Code Online (Sandbox Code Playgroud)
[Session started at 2010-01-01 13:40:35 -0600.] 2010-01-01 13:40:35.182 TimeSheet[15382:20b] *** -[UISegmentedControl view]: unrecognized selector sent to instance 0x3f5c3e0 2010-01-01 13:40:35.183 TimeSheet[15382:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', …
我在Adobe Illustrator CS4中创建了一个40px x 40px的图像.我保存为.ai文件,然后尝试导出为PNG.
Adobe Illustrator会自动裁剪背景并将输出拉紧到所有对象周围的矩形,如果正常的话.在这种情况下,我没有边缘工作,所以我的图像不是很宽40px.
但遗憾的是,Illustrator并未导出整个图像.我最终得到了34px宽的图像.实际上,我绘制的图标从左侧开始,但我的对象的右边缘被切断.
任何想法为什么会这样?我无法想象Illustrator CS4无法正确导出到PNG.
NSFetchedResultsControllerDelegate的文档提供以下示例代码
- (void)controller:(NSFetchedResultsController *)controller
didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath {
UITableView *tableView = self.tableView;
switch(type) {
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
[self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
break;
case NSFetchedResultsChangeMove:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView reloadSections:[NSIndexSet indexSetWithIndex:newIndexPath.section] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
Run Code Online (Sandbox Code Playgroud)
当我创建一个新的NSManagedObject时,NSFetchedResultsChangeInsert会触发(太棒了!).当我更改属性的值(用于单元格的标题)时,NSFetchedResultsChangeUpdate将触发.不幸的是,除非我重新加载表格,部分或行,否则新标题不会自动显示.实际上,如果新名称导致结果集排序不同,那么NSFetchedResultsChangeMove会触发,因为提供的代码会重新加载整个部分,所以一切都很好.
的UITableView有一个方法reloadRowsAtIndexPaths:withRowAnimation所以我试图下使用该NSFetchedResultsChangeUpdate代码块.它确实有用......但是这个特定方法的文档读起来好像我不需要它(注意最后一行):
重新加载行会导致表视图向其数据源询问该行的新单元格.该表动画化了新单元格,因为它为旧行设置了动画.如果要提醒用户单元格的值正在更改,请调用此方法.但是,如果通知用户并不重要 - 也就是说,您只想更改单元格显示的值 - 您可以获取特定行的单元格并设置其新值.
是的,如果我记录发生了什么,何时
[self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
Run Code Online (Sandbox Code Playgroud)
在NSFetchedResultsChangeUpdate上调用它,它能够检索最新的"名称"值并将其设置在单元格的textLabel中.除非重新加载,否则名称不会在单元格中呈现.即使我只是单击名称显示的单元格.请注意,要重新创建此行为,您必须创建一个新的托管对象,然后为其指定一个名称,使其在NSFetchedResultsController中对FIRST进行排序.这样,NSFetchedResultsChangeMove不会触发(因为它重新加载该部分,它确实有效).
我错过了什么或这是预期的行为吗?reloadRowsAtIndexPaths的'讨论' 让我相信我应该能够简单地设置单元格的textLabel而无需重新加载行,部分或表格.
有没有办法以编程方式获得UITableView的"分组"样式填充?
我想在屏幕上调整一些大小,但是我需要知道将它们放在UITableView的UITableViewCell分组的左边或右边.
我的问题围绕着UINavigationBar与UIToolbar上的UISegmentedController的区别.如果我将UISegmentedControl放入导航栏,如下所示:
navigationBar.barStyle = UIBarStyleBlackTranslucent;
Run Code Online (Sandbox Code Playgroud)
一切都很好.UISegmentedControl使用稍暗的黑色标识所选选项.但是,如果我将UISegmentedControl放到UIToolbar上,它就不会从工具栏中获取颜色或半透明度.如果我手动设置tintColor,则UISegmentedControl不再区分selected和unselected.
不可否认,在放入UIToolbar之前,必须将UISegmentedControl包装在UIBarButtonItem中.我想知道这是否是UISegmentedControl看起来不正确的原因(半透明黑色背景上的蓝色).
toolbar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
NSArray *toolbarItems = [[NSArray alloc] initWithObjects:item,nil];
toolbar.items = toolbarItems;
Run Code Online (Sandbox Code Playgroud)
当然,由于我使用的是内部导航和控制器工具栏,但我的代码并不完整,但一般逻辑是相同的.我不确定如何使UIToolbar上的UISegmentedControl具有黑色半透明样式 - 在选定和未选定的段之间保持明显的区别.