我使用此代码没有问题,但我想将搜索控制器放在导航项下面titleView
,而不是替换它.使用iOS11,它就像设置navigationItem.searchController
到它一样简单searchController
,它会将它放在下面titleView
,但是在navigationItem
.
有关如何在iOS 11之前执行此操作的任何想法,而不是替换titleView
?
现行代码:
if #available(iOS 11, *) {
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
} else {
navigationItem.titleView = searchController.searchBar
}
Run Code Online (Sandbox Code Playgroud) 是否可以扩展Swift功能的功能?我想在我的程序中的每个print()函数上添加一个字符,而不必创建一个全新的函数并重命名print()的每个实例.是否可以创建一个在每个打印实例上附加'*'的扩展名?
这样做的目的是创建一种清除XCODE添加到调试器中的所有额外信息的方法.我使用print语句检查代码的不同部分的进度和成功,但XCODE在几秒钟内填写了数千行超额信息,很快就掩盖了我的具体陈述.
我想做的事:
print("Hello world!")
//Psuedo code:
Extension print(text: String) {
let newText = "*\(text)"
return newText
}
Run Code Online (Sandbox Code Playgroud)
输出:*Hello World!
然后我将过滤星号的Xcode调试输出.我一直在手动这样做
例如,在以下代码行中:
DispatchQueue.global(qos: .userInitiated).async { ... }
Run Code Online (Sandbox Code Playgroud)
为什么.userInitiated
从一个时期开始?这是从Objective C开始还是特定于Swift?
我有一个标签栏应用程序和一个选项卡,其视图控制器由UITableView类控制.我有一个类用于从服务器下载数据,然后将其保存到NSDefaults.从那里我希望该类能够更新表视图,但不知道如何访问表视图的类来更新它.
class updates {
func checkForUpdates() {
//start on background thread
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)) { [unowned self] in
//start contacting database:
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
let actualVersion = self.contactForUpdates()
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
if actualVersion > self.defaults.objectForKey("version") as! Int {
//update data
if self.downloadUpdates() {
//update version number
self.defaults.setObject(actualVersion, forKey: "version")
//Indicates progress finished
//self.stopSpinner()
}
}//end updates
else {
//Indicates progress finished
//self.stopSpinner()
}
}//end background queue
}
}
Run Code Online (Sandbox Code Playgroud)
有两个区域注释//Indicates progress finished
我想从类中运行tableView:
class connectTableVC: UITableViewController {
...
}
Run Code Online (Sandbox Code Playgroud)