当我将UISearchBar放入Interface Builder中的视图中,并将其样式更改为Black Opaque时,取消按钮保持不合适的蓝色/灰色并且不会变为黑色.
如何将取消按钮设为黑色?
编辑:它确实像这样工作:
// Assume a UISearchBar searchBar.
NSArray *subviews = [searchBar subviews];
// The index depends on how you configure the searchBar.
UIButton *cancelButton = [subviews objectAtIndex:3];
// Set the style to "normal" style.
[cancelButton setStyle:0];
Run Code Online (Sandbox Code Playgroud)
但该setStyle:方法来自私有框架,因此在向Apple提交应用程序时可能会出现问题.
cocoa-touch background-color uibarbuttonitem uisearchbar ios
我真的想在我的Swift代码中使用更简单的经典try catch块,但我找不到任何可以做到的东西.
我只需要:
try {
// some code that causes a crash.
}
catch {
// okay well that crashed, so lets ignore this block and move on.
}
Run Code Online (Sandbox Code Playgroud)
这是我的困境,当TableView重新加载新数据时,一些信息仍然存在于RAM中,它调用didEndDisplayingCell一个带有新空数据源的tableView崩溃.
所以我经常抛出异常 Index out of range
我试过这个:
func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
do {
let imageMessageBody = msgSections[indexPath.section].msg[indexPath.row] as? ImageMessageBody
let cell = tableView.dequeueReusableCellWithIdentifier("ImageUploadCell", forIndexPath: indexPath) as! ImageCell
cell.willEndDisplayingCell()
} catch {
print("Swift try catch is confusing...")
}
}
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
func tableView(tableView: UITableView, didEndDisplayingCell …Run Code Online (Sandbox Code Playgroud) 我在Swift 2.3中写了以下扩展:
extension CollectionType {
/// Returns the element at the specified index iff it is within bounds, otherwise nil.
subscript (safe index: Index) -> Generator.Element? {
return indices.contains(index) ? self[index] : nil
}
}
Run Code Online (Sandbox Code Playgroud)
但事实证明,Swift 3.0没有contains()功能.相反,它为我提供了以下语法:
indices.contains(where: { (<#Self.Indices.Iterator.Element#>) -> Bool in
<# code ??? what should it do??? #>
})
Run Code Online (Sandbox Code Playgroud)
问题是我不知道它在块内应该包含什么.请帮忙迁移它吗?
我有一组自定义类对象,我需要修改最后一个元素的属性。我知道“last”和“first”是作为getter实现的,但是,这对我没有帮助:)除了通过索引访问最后一个元素之外,还有其他方法吗?
更新
protocol DogProtocol {
var age: Int {get set}
}
class Dog: DogProtocol {
var age = 0
}
var dogs = Array<DogProtocol>()
dogs.append(Dog())
dogs.last?.age += 1 // Generates error in playground: left side of mutating operator isn't mutable: 'last" is a get-only property
Run Code Online (Sandbox Code Playgroud) 当访问字典时,例如[String: Any],结果类型为Optional(Any)。
对 的数组进行索引时[Any],结果类型为Any,并且调用可能会引发致命错误。
这种差异有什么原因吗?
guard let使用、if let、?和 来分支执行真是太好了??,但是您必须将数组索引包装在if data.count <= index.
我知道这是一个非常新手的问题,但它已经把我扔了好几天,我似乎无法找到一个我真正理解的解决方案.
我正在尝试创建一个嵌套数组来存储纬度和经度,但是Xcode/playground会抛出一个EXC_BAD_INSTRUCTION错误.
我想声明,初始化和打印数组的内容.我究竟做错了什么?
var arrayLocations:[[Float]] = []
arrayLocations[0] = [27.1750199, 78.0399665]
print("\(arrayLocations[0][0]) and \(arrayLocations[0][1])")
Run Code Online (Sandbox Code Playgroud) 日志中的错误:
* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[ NSArray0 objectAtIndex:]:索引 2 超出空 NSArray 的范围”*** 第一个抛出调用堆栈:( 0 CoreFoundation 0x000000010fdd8b0b __exceptionPreprocess + 171 1 libobjc.A. dylib 0x00000001143a6141 objc_exception_throw + 48 2 CoreFoundation 0x000000010fdf027d -[__NSArray0 objectAtIndex:] + 93 3 DropInn 0x000000010d598fc4 _TFC7DropInn21ListingViewController9tableViewfTCSo11UITableView 14didSelectRowAtV10Foundation9IndexPath_T_ + 5972 4 DropInn 0x000000010d599837 _TToFC7DropInn21ListingViewController9tableViewfTCSo11UITableView14didSelectRowAtV10Foundation9IndexPath_T_ + 87 5 UIKit 0x00000001122b3dcd -[UI TableView _selectRowAtIndexPath:动画:scrollPosition:notifyDelegate:] + 1763 6 UIKit 0x00000001122b3fe3 -[ UITableView _userSelectRowAtPendingSelectionIndexPath:] + 344 7 UIKit 0x00000001121697f3 _runAfterCACommitDeferredBlocks + 318 8 UIKit 0x00000001121567bc _cleanUpAfterCAFlushAndRunDeferredBlocks + 532 9 UIKit 0x000000011218828c _afterCACommitHandler + 137 10 CoreFoundation …
我的数组是 [[Int]] 类型
array = [[1,2,3],
[4,5,6],
[7,8,9,10],
[11,12,13],
[14,15,16]]
Run Code Online (Sandbox Code Playgroud)
我希望转置结果为:
array = [[1,4,7,11,14],
[2,5,8,12,15],
[3,6,9,13,16],
[0,0,10,0,0]]
Run Code Online (Sandbox Code Playgroud)
如何将 0 填充到没有相等行或列映射的数组。
我希望转置适用于具有不相等映射元素的行和列。请帮忙。
为了防止潜在的崩溃,每当我尝试访问阵列中的特定元素时,我通常会进行一些安全检查.我才意识到我已经厌倦了这样做.有没有办法快速安全地完成?
var array:[String] = [/*Filled with stuff*/]
func someFunc(someIndex:Int){
//This is unsafe. It will crash if index is negative or larger than count.
let text = array[someIndex]
//This is completely safe, but boring.
let text:String
if someIndex >= 0 && someIndex < array.count{
text = array[someIndex]
}else { return }
//What I want is something like this:
let text = array.hasElement(at: someIndex) ? array[someIndex] : return
//I know, I can't really put a 'return' in a statement like this, but …Run Code Online (Sandbox Code Playgroud) swift ×7
ios ×5
arrays ×2
swift3 ×2
cocoa-touch ×1
indexing ×1
nsarray ×1
padding ×1
swift2.3 ×1
swift4 ×1
transpose ×1
uisearchbar ×1
uitableview ×1