当iOS应用程序启动时,我需要编写一些代码来将视图切换到另一个选项卡(例如,默认情况下显示第二个选项卡而不是第一个选项卡).
我是Swift的新手,并且已经解决了以下问题:
代码应该放在第一个选项卡的ViewController的override func viewDidLoad()函数中.
以下代码显示了第二个ViewController,但没有显示底部的选项卡栏(vcOptions是第二个ViewController选项卡项:
let vc : AnyObject! = self.storyboard.instantiateViewControllerWithIdentifier("vcOptions")
self.showViewController(vc as UIViewController, sender: vc)
Run Code Online (Sandbox Code Playgroud)
我认为答案可能在于使用UITabbarController.selectedIndex = 1,但不太确定如何实现它.
我目前正在Swift中编写一个简单的电话簿应用程序,需要对CoreData查询中的结果进行排序.
基本上,我设置了一个名为"Directory"的NSManagedObject,其中包含相应的字段名称 - 例如"name_f"是用户的名字.
查询的CoreData数据库中的名称按字母顺序排列.但是,尽管第一次搜索按字母顺序返回结果,但有时不会在程序的其他区域查询数据库之后进一步搜索.我不确定为什么会这样,但是想要放入代码来通过任何字段主动对返回的数组进行排序.
我返回NSManagedObject数组的代码如下:
func SearchName(nameToSearch: String) -> NSArray {
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext! //I added the !
let request = NSFetchRequest(entityName: "Directory")
request.returnsObjectsAsFaults = false //will return the instance of the object
//request.predicate = NSPredicate(format: "name_f = %@", nameToSearch)
//request.predicate = NSPredicate(format: "name_f MATCHES '.*(\(nameToSearch)).*'")
request.predicate = NSPredicate(format: "name_f MATCHES[cd] '(\(nameToSearch)).*'")
var results:NSArray = context.executeFetchRequest(request, error: nil)
return results
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我使用以下代码从返回的结果中提取特定值(其中searchResult是SearchName所在的类的实例):
var particularEntry = self.searchResult[self.selectedItem] as Directory
lblDetailName.text = thisPerson.name_f
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够:1 …
我在Swift中为listView创建了一个自定义单元格.它上面有两个按钮 - 一个是"暂停"按钮,另一个是"停止"按钮.我们的想法是每个订单项代表一个下载,因此用户可以独立停止和启动每个订单项.
但是,我需要为每个按钮创建一个@IBAction.我已经在主ViewController中创建了这些,当然,当它们被连接起来时,它们会触发相应的.
我坚持的位是识别按下哪一行按钮的标识符.我假设与cellForRowAtIndexPath有关的东西可行.
我找到了以下代码(我从类似的文本字段问题中找到):
@IBAction func startOrPauseDownloadSingleFile(sender: UIButton!) {
let pointInTable: CGPoint = sender.convertPoint(sender.bounds.origin, toView: self.tableView)
let cellIndexPath = self.tableView.indexPathForRowAtPoint(pointInTable)
}
Run Code Online (Sandbox Code Playgroud)
但是我不断收到错误'无法使用类型的参数列表调用'convertPoint'(@lvalue CGPoint,toView:$ T6)'.
有人可以帮忙吗?
谢谢,
我正在尝试使用ios8的VPN配置和控制设置应用内VPN连接,但我被卡住了.我正在使用http://ramezanpour.net/post/2014/08/03/configure-and-manage-vpn-connections-programmatically-in-ios-8/上的资源来帮助,但我遇到了问题将协议绑定到VPN管理器.
到目前为止,我有以下代码,根据上面的教程,您需要将协议绑定到管理器...
func initVPN() {
let manager: NEVPNManager = NEVPNManager.sharedManager()
let p = NEVPNProtocolIPSec()
p.username = "ospencer"
p.passwordReference = getPasscodeNSData("vpnPassword")
p.serverAddress = "vconnect.uk.capgemini.com"
p.authenticationMethod = NEVPNIKEAuthenticationMethod.SharedSecret
p.sharedSecretReference = getPasscodeNSData("vpnSharedSecret")
p.useExtendedAuthentication = true
p.disconnectOnSleep = false
Run Code Online (Sandbox Code Playgroud)
我已经尝试编写manager.protocol = p,但是我收到错误"预期成员名称跟随".和"协议声明中的预期标识符".我尝试了一些在一些Objective C示例'[manager setProtocol:p]'中使用的setProtocol函数,但这似乎不存在于最新的xcode构建中.
有人可以帮忙吗?此外,似乎几乎没有关于在互联网上使用VPN功能的详细信息 - 即使在Apple的网站上也是如此.任何指针都很有用.
谢谢,
奥利弗.
一段时间以来,我一直在 Windows 7 系统上使用 Chromium,并且运行良好。但是,在https://download-chromium.appspot.com的常用位置升级到最新版本后,当我加载浏览器时,我收到消息“Google API 密钥丢失。Chromium 的某些功能将被禁用”。
然后我也无法登录我的 Google 帐户,收到消息“哦哦。服务不可用,请稍后再试”。我认为这是因为上面的 API 密钥存在问题。
尽管今天删除、重新安装并使用最新版本 (362135),但我仍然无法消除错误。我的普通版 Chrome 工作正常。
有没有人有任何想法?
谢谢,
奥利弗。
我正在尝试将listView选择的选定索引号从一个ViewController传递到另一个ViewController但遇到问题时,tableView didSelectRowAtIndexPath委托比prepareForSegue函数稍晚运行.
基本上,在didSelectRowAtIndexPath中,我选择变量,然后在prepareForSegue中获取.问题是prepareForSegue似乎运行第二个选择单元格,并且在调用didSelectRowAtIndexPath函数之前,所以我的变量没有被传递.
我的主要代码是:
tableView didSelectRowAtIndexPath委托,设置'selectedResult'...
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
selectedResult = indexPath.item
txtNameSearch.resignFirstResponder() //get rid of keyboard when table touched.
println("saved result")
//tableView.deselectRowAtIndexPath(indexPath, animated: false)
//var tappedItem: ToDoItem = self.toDoItems.objectAtIndex(indexPath.row) as ToDoItem
//tappedItem.completed = !tappedItem.completed
//tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
prepareForSegue函数将变量作为'toPass'发送到另一个ViewController('detailViewController'):
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!){
if (segue.identifier == "detailSeque") {
println("preparing")
var svc = segue!.destinationViewController as detailViewController
svc.toPass = selectedResult
//println(tableView.indexPathsForSelectedRows().
//svc.toPass = tableView.indexPathForSelectedRow()
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢