关于如何删除swift中的所有核心数据,我有点困惑.我创建了一个带IBAction链接的按钮.点击按钮我有以下内容:
let appDel: foodforteethAppDelegate = UIApplication.sharedApplication().delegate as foodforteethAppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
Run Code Online (Sandbox Code Playgroud)
然后我用各种方法搞砸了尝试删除所有核心数据内容,但我似乎无法让它工作.我已经使用removeAll从存储的数组中删除但仍然无法从核心数据中删除.我假设我需要某种类型的for循环但不确定如何从请求中创建它.
我尝试应用删除单行的基本原则
func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
let appDel: foodforteethAppDelegate = UIApplication.sharedApplication().delegate as foodforteethAppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext
if editingStyle == UITableViewCellEditingStyle.Delete {
if let tv = tblTasks {
context.deleteObject(myList[indexPath!.row] as NSManagedObject)
myList.removeAtIndex(indexPath!.row)
tv.deleteRowsAtIndexPaths([indexPath!], withRowAnimation: UITableViewRowAnimation.Fade)
}
var error: NSError? = nil
if !context.save(&error) {
abort()
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这个问题是当我单击一个按钮时,我没有indexPath值,而且我还需要遍历所有我无法用上下文做的值.
我目前正在使用SWRevealViewController作为我的应用程序中的侧边栏菜单.当我单击其中一个选项时,目标视图控制器没有"后退"按钮,因为它没有来自正确的视图控制器(即要返回的页面).
因此,我想在目标视图控制器上手动创建一个后退按钮,它将返回到主视图控制器.
我在这里查看了代码:如何在iOS应用程序中手动设置"返回"目标
但我正在努力在Swift中实现这个(一个接一个错误!).有帮助吗?谢谢!
编辑
我已经尝试了下面的建议,但后面的按钮没有出现.这可能与我在其他视图中隐藏导航栏并在目标视图上执行以下操作有关:
override func viewDidLoad() {
super.viewDidLoad()
navigationController.setNavigationBarHidden(false, animated:true)
var myBackButton:UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
myBackButton.addTarget(self, action: "popToRoot:", forControlEvents: UIControlEvents.TouchUpInside)
var myCustomBackButtonItem:UIBarButtonItem = UIBarButtonItem(customView: myBackButton)
self.navigationItem.leftBarButtonItem = myCustomBackButtonItem
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func popToRoot(sender:UIBarButtonItem){
self.navigationController.popToRootViewControllerAnimated(true)
}
Run Code Online (Sandbox Code Playgroud)
不知道为什么后退按钮不会出现?
编辑
这是我的侧边栏视图控制器中的prepareForSegue.如果有办法检查segue标识符'test',那么我可以从这里设置后退按钮?
- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender
{
// Set the title of navigation bar by using the menu items
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
UINavigationController *destViewController = (UINavigationController*)segue.destinationViewController;
destViewController.title = …Run Code Online (Sandbox Code Playgroud) 我正在使用'插件'SWRevealViewController帮助在我的应用程序中生成侧边栏.现在在objective-C中,您可以使用以下代码控制侧栏:
[self.sidebarButton setTarget: self.revealViewController];
[self.sidebarButton setAction: @selector( revealToggle: )];
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)
sidebarButton已被连接到UIBarButtonItem和IBOutlet.现在我试图将它应用于我的Swift代码,并且我取得了成功.
我已经设置了一个@IBOutlet var按钮.现在我尝试了UIBarButtonItem和UIButton.当我尝试UIBarButtonItem时,我使用了以下行:
button = UIBarButtonItem(barButtonSystemItem: .Add, target: self.revealViewController(), action: "revealToggle:")
Run Code Online (Sandbox Code Playgroud)
但是,这没有任何作用,按钮不起作用.但是,如果我将按钮设置为UIButton并将其与以下内容挂钩:
button.addTarget(self.revealViewController(), action:"revealToggle:", forControlEvents:UIControlEvents.TouchUpInside)
Run Code Online (Sandbox Code Playgroud)
这可以将栏滑出而不是通过手势.问题是我无法将UIButton添加到工具栏(无论如何都在StoryBoard中).
那么有没有办法正确实现这个?此外,是否可以添加手势识别器?
谢谢
编辑
好吧,我已经设法让手势切换工作,虽然我认为我的方法有点长篇大论:
var swipeRight = UISwipeGestureRecognizer(target: self.revealViewController(), action: "revealToggle:")
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.view.addGestureRecognizer(swipeRight)
var swipeLeft = UISwipeGestureRecognizer(target: self.revealViewController(), action: "revealToggle:")
swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
self.view.addGestureRecognizer(swipeLeft)
Run Code Online (Sandbox Code Playgroud)
所以请更正.
我正在努力设置datepicker只允许时间和Swift的24小时格式,任何想法如何做到这一点?
谢谢