我有一个UITableView,有几个不同的部分.一个部分包含将在用户将文本键入UITextView时调整大小的单元格.另一部分包含呈现HTML内容的单元格,计算高度相对较高.
现在当用户输入UITextView时,为了让表视图更新单元格的高度,我打电话
[self.tableView beginUpdates];
[self.tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)
但是,当我真的只需要更新输入的单个单元格时,这会导致表重新计算表中每个单元格的高度.不仅如此,它不是使用重新计算估计的高度,而是要求每个单元格,甚至是那些未被显示的单元格.tableView:estimatedHeightForRowAtIndexPath:tableView:heightForRowAtIndexPath:
有没有办法让表格视图更新单个单元格的高度,而不做所有这些不必要的工作?
更新
我还在寻找解决方案.正如所建议的那样,我已经尝试过使用reloadRowsAtIndexPaths:,但看起来并不会起作用.reloadRowsAtIndexPaths:甚至单行调用仍将导致heightForRowAtIndexPath:每行调用,即使cellForRowAtIndexPath:只调用您请求的行.实际上,heightForRowAtIndexPath:对于表格单元格中的每一行,都会在任何时候插入,删除或重新加载行.
我还尝试将代码willDisplayCell:forRowAtIndexPath:插入到单元格出现之前计算高度.为了使其工作,我需要强制表视图在我进行计算后重新请求行的高度.不幸的是,调用[self.tableView beginUpdates]; [self.tableView endUpdates];from willDisplayCell:forRowAtIndexPath:会导致UITableView内部代码中的索引超出范围异常.我猜他们不指望我们这样做.
我不禁觉得这是SDK中的一个错误,响应[self.tableView endUpdates]它不会调用estimatedHeightForRowAtIndexPath:不可见的单元格,但我仍然试图找到某种解决方法.任何帮助表示赞赏.
我正在设计一个带有UICollectionView的iOS应用程序,我希望用户能够在此视图中选择多个项目.似乎Apple在这种情况下使用了标准的复选标记.例如,在下图中,您可以在共享表中选择多张照片时看到它.
根据文档,您负责更新单元格的UI以反映其选择状态.我知道在UITableViewCell上你可以设置accessoryType属性来添加一个复选标记,但我似乎找不到任何UICollectionViewCell的等价物.
有没有Apple提供的方式在我的应用程序中使用此复选标记,除了试图从屏幕截图中删除此图标?

我需要确定特定系统是否安装了32位Java.我正在进行远程查询,只允许我访问文件系统和注册表,因此我无法尝试运行java.exe或运行任何Java代码.
我还想确保我检测到IBM和Sun Java以及任何其他发行版,这些发行版似乎将文件放在文件系统和注册表中的不同位置.
我提出的最好的方法是检查C:\ Windows\SysWOW64\java.exe.这是测试32位Java存在的可靠方法,还是某些版本不会将java.exe放在该文件夹中?
更新:我仍然在寻找更加健全的答案.为了清楚起见,我无法访问命令提示符.此外,无论发布者是谁,安装了什么版本号,以及用户选择安装它的路径,我都想检测Java.
C:\ Windows\SysWOW64\java.exe似乎符合这些要求,但是我希望得到更多知识渊博的人的确认,即每个Java安装程序确实会将该可执行文件放在那里.
我正在使用Windows API调用FindFirstFile和FindNextFile来搜索与目录中某个通配符字符串匹配的文件.例如,我可能想要查找目录中的所有XML文件,因此我使用模式"*.xml"进行搜索.
我遇到的问题是,如果我正在搜索一个3个字母的扩展名,并且文件的扩展名以3个字母的扩展名开头,那么即使扩展名包含更多字符,我的搜索也会收到它.第一个3.例如,如果我的文件名为somelongname.xmlaaaa,搜索"*.xml"将会获取该文件.该文件的简称是somelo~1.xml,它匹配我的通配符字符串.
我可以做自己的通配符匹配来解决这个问题,但可能是Windows API能够比我更有效地做到这一点,我的代码会更简单.据我所知,没有办法强制这些函数忽略短名称.是否有任何API Windows公开此功能?
在我的应用程序中,某些视图控制器在iPad上(或者更具体地说,是一个常规的水平尺寸类)将它们作为弹出窗口显示是有意义的,但是在iPhone(或紧凑的水平尺寸类)上推送它是有意义的他们到导航堆栈上.有一种优雅的方式来支持这个吗?默认情况下,如果我使用"Present as Popover"segue,它将在iPhone上以模态方式显示,这不是我想要的.
我找到了一种方法来获得我想要的行为,但它很难看,而且容易出错.我根据我目前所处的大小类选择两个不同的segue.为了支持iOS 9多任务,我实现[UIViewController willTransitionToTraitCollection:withTransitionCoordinator]并在弹出窗口和导航控制器之间手动移动视图控制器(这部分看起来特别容易出错).
似乎应该有一些简单的方法来实现自定义segue来处理这个,或者某种自定义自适应表示控制器,但我还是无法绕过它.有人做过这样的成功吗?
在代码中,NSLocalizedString宏允许您提供描述性注释以及字符串,因此您的翻译人员具有编写翻译的必要上下文.但是,我没有看到任何方法与我的故事板中的字符串一起提供等效注释.相反,xliff文件包含如下注释:
Class = "NSTextFieldCell"; title = "Created"; ObjectID = "1u4-pn-J7a";
不是很有用.有什么方法可以让我的译员更好地解释这些字符串的用途/位置吗?
xcode cocoa localization interface-builder internationalization
从iOS 11开始,当我解雇时,我的应用程序中的状态栏是行为不端的.状态栏被取消时,状态栏的背景变为清晰状态.它在iOS 10中没有这样做.
我在一个非常简单的应用程序中重新创建了这个问题,我已经在Github上发布了:TestStatusBarBug.以下是所有相关代码:
AppDelegate.m
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[UINavigationBar appearance] setBarTintColor:[UIColor grayColor]];
return YES;
}
@end
Run Code Online (Sandbox Code Playgroud)
ViewController.m
#import "ViewController.h"
@interface ViewController () {
BOOL _statusBarHidden;
}
@end
@implementation ViewController
-(BOOL)prefersStatusBarHidden
{
return _statusBarHidden;
}
-(UIStatusBarAnimation)preferredStatusBarUpdateAnimation
{
return UIStatusBarAnimationSlide;
}
- (IBAction)toggleStatusBar {
_statusBarHidden = !_statusBarHidden;
[UIView animateWithDuration:0.35 animations:^{
[self setNeedsStatusBarAppearanceUpdate];
}];
}
@end
Run Code Online (Sandbox Code Playgroud)
还有其他人遇到过这个问题吗?有修复或解决方法吗?
我刚刚在我已使用多年的现有Jenkins实例上安装了Blue Ocean.登陆页面没有加载,我收到以下错误,我没有成功找到SO或其他谷歌搜索的答案.我在Jenkins构建2.107.3,Blue Ocean 1.6.1.
我能够成功创建一个新的管道,但当我回到这个页面时,它永远不会完成加载.
有没有人遇到过这个错误,或者有关于如何进行调试的建议?
blueocean-core-js.js:57883 Error fetching page TypeError: Cannot read property 'self' of undefined
at ActivityService.bunkerKey (blueocean-core-js.js:57207)
at ActivityService.setItem (blueocean-core-js.js:57250)
at executeAction (blueocean-core-js.js:40729)
at ActivityService.res (blueocean-core-js.js:40701)
at PipelineService._this.bunkerMapper (blueocean-core-js.js:58214)
at PipelineService.setItem (blueocean-core-js.js:57249)
at executeAction (blueocean-core-js.js:40729)
at PipelineService.res (blueocean-core-js.js:40701)
at blueocean-core-js.js:57268
at Array.map (<anonymous>)
at PipelineService.setItems (blueocean-core-js.js:57267)
at blueocean-core-js.js:57867
at executeAction (blueocean-core-js.js:40729)
at res (blueocean-core-js.js:40701)
更新
我在另一台设备上安装了 iOS 13 GM,没有遇到此问题。所以我不再确定这是否是 iOS 13 GM 特有的,或者是我安装它的方式的问题。在第一台设备(iPhone X)上,我进行了升级(通过 iTunes 中的“选项键 + 检查更新按钮”)。在第二台设备(iPhone SE)上,我进行了完整恢复。尚不确定是什么导致它进入这种状态。
原始问题
AVSpeechSynthesisVoice.speechVoices()报告称,当我在装有 iOS 13 GM 的设备上运行它时,没有可用的语音。事实上,当我尝试使用AVSpeechSynthesisVoice(identifier:)它加载语音时,它总是返回零。它在模拟器中工作。我不认为这是以前的测试版的问题,而且它似乎适用于 iOS 13.1 beta 2 和 3。
有没有人遇到过这种情况,并想出任何解决方法?我没有看到任何有意更改此行为的文档,因此我怀疑这是一个错误。我打算提交雷达。但这对于即将发布的 iOS 13 来说并没有什么帮助。
在新创建的单视图项目中可以重现此行为,并将以下简单viewDidLoad功能添加到包含的视图控制器中。
override func viewDidLoad() {
super.viewDidLoad()
let voices = AVSpeechSynthesisVoice.speechVoices()
print("Voice Count: \(voices.count)")
}
Run Code Online (Sandbox Code Playgroud)
输出很长:
2019-09-11 10:43:09.370992-0400 SpeechTest[1617:412065] Creating client/daemon connection: C591307C-313E-4B5F-91A8-184B7E662819
2019-09-11 10:43:09.396250-0400 SpeechTest[1617:412065] Got the query meta data reply for: com.apple.MobileAsset.MacinTalkVoiceAssets, response: 0
2019-09-11 10:43:09.397519-0400 SpeechTest[1617:412065] Consumed extension
2019-09-11 10:43:09.401982-0400 SpeechTest[1617:412065] Got …Run Code Online (Sandbox Code Playgroud) 当我在多个模拟器上并行运行 UI 测试时,克隆的模拟器似乎对xcrun simctl.
运行时xcrun simctl list,源模拟器出现,但处于“关闭”状态:
4 Inch Snapshots - en-US (0) (3334A5D1-A4EC-41ED-AB10-55495B4BE329) (Shutdown)
当我尝试对“启动”设备运行任何命令时,它声称没有模拟器在运行:
xcrun simctl status_bar booted override --time "2007-01-09T09:41:00-05:00"
No devices are booted.
Run Code Online (Sandbox Code Playgroud)
有什么方法可以针对这些克隆模拟器吗xcrun simctl?
更新03/25/14
看起来缺少动画是iOS 7.0中的一个错误,并且已经在iOS 7.1中得到修复.
原始问题
通常,当您在iOS 7中的搜索栏内点击时,它会有一个漂亮的小动画,其中放大镜和"搜索"文本从搜索栏的中间滑动到左侧.但是,如果我将搜索栏放在导航栏中而不是在表格视图中,则它不再是动画.相反,放大镜和"搜索"文本会立即跳转到搜索栏的左侧.
使用Apple的UISearchBar示例项目,您可以轻松地看到这一点.打开故事板.displaysSearchBarInNavigationBar在Search Display Controller上添加一个布尔运行时属性,并选中它创建的复选框.然后,将搜索栏向上移动到树中的一个级别,使其位于表视图之外.运行项目,搜索栏现在应该在导航栏中.请注意,当您点按搜索栏时,它不会设置动画.
有没有人成功地将UISearchBar放在iOS 7的导航栏中,并让它正常运行?
为了清楚起见,我的问题是当用户点击搜索栏时,下面的第一个和第二个屏幕截图之间没有搜索栏的动画.

我正在构建一个将包含在其他应用程序中的框架.我有一些代码需要在应用程序首次启动时运行.
许多框架要求开发人员在开始时包含一行[UIApplicationDelegate application:didFinishLaunchingWithOptions:]来初始化他们的框架.但是,我注意到Reveal的框架不需要这个.只需在项目中包含框架即可与您的应用程序集成,并在您的应用程序中启动其Web服务器.
他们如何做到这一点?
我目前正在开展一个项目,我们希望允许用户将其数据导出为CSV.我们提供的一些数据对于单个单元格具有多个值,因此我们使用标准CSV方法将每个值放在其自己的行上:
Column A, Column B, Column C
Value A, "Value B1
Value B2", Value C
Run Code Online (Sandbox Code Playgroud)
大部分时间这种方法都可以正常工作,但有些人报告说,当他们在Excel中加载文件时,在每行末尾会出现一个小字号.为什么会这样?
ios ×6
cocoa-touch ×2
uitableview ×2
32-bit ×1
64-bit ×1
animation ×1
avfoundation ×1
c ×1
c++ ×1
cocoa ×1
csv ×1
excel ×1
filesystems ×1
ios11 ×1
ios13 ×1
ipad ×1
iphone ×1
java ×1
jenkins ×1
localization ×1
newline ×1
objective-c ×1
popover ×1
simctl ×1
size-classes ×1
statusbar ×1
uisearchbar ×1
uistatusbar ×1
winapi ×1
windows ×1
xcode ×1
xcrun ×1