我有一个名为Ingr的TableView控制器。其中有一个项目列表。我设置了编辑按钮和删除功能。现在,我正在尝试设置添加功能,因为这些项必须由用户添加。我的问题是隐藏“添加”按钮,直到您单击“编辑”按钮。因此,我无法从故事板中制作一个segue,因为我没有看到按钮。我需要在单击添加时切换到另一个控制器。我试图以这种方式解决它:
ViewControllerIngr.h
@interface ViewControllerIngr : UITableViewController <UITableViewDataSource , UITableViewDelegate>
-(IBAction) editButtonClicked:(id)sender;
-(IBAction) addAction:(id)sender;
-(IBAction) doneAction:(id)sender;
@end
ViewControllerIngr.m
-(IBAction)editButtonClicked:(id)sender
{
[self.tableView setEditing:YES animated:YES];
UIBarButtonItem *addBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAction:)];
self.navigationItem.leftBarButtonItem = addBtn;
UIBarButtonItem *fattoBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneAction:)];
self.navigationItem.rightBarButtonItem = fattoBtn;
}
-(void)doneAction:(id)sender{
[self.tableView setEditing:NO animated:NO];
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editButtonClicked:)];
}
-(IBAction)addAction:(id)sender{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
ViewControllerInfo *info = (ViewControllerInfo*)[storyboard instantiateViewControllerWithIdentifier:@"info"];
[self presentViewController:info animated:YES completion:nil];
}
我只想在这里复制所有3个按钮发件人更清楚。然而,我写的唯一一个我不知道是错还是正确的是addAction,考虑到当它切换时我无法看到我在ViewControllerInfo中设计的内容。
我没有以任何方式编辑ViewControllerInfo.h和ViewControllerInfo.m
答案 0 :(得分:1)
您可以在故事板中添加segue,而无需将其链接到特定按钮。
你需要从一个ViewController到另一个创建一个segue - 你可以通过从ViewController进行控制点击来实现这一点(它可能最容易从状态栏的顶部拖动)并拖动到另一个。然后,选择segue,并在右侧的检查器中为其指定标识符。
然后,在代码中,您可以使用其标识符执行此segue,如下所示:
[self performSegueWithIdentifier:@"MySegueIdentifier" sender:self];
答案 1 :(得分:0)
首先,在.xib文件的属性检查器中,为该视图或nib文件创建一个标识符;假设它是 info
如果您使用NavigationController
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
ViewControllerInfo *info = (ViewControllerInfo*)[storyboard instantiateViewControllerWithIdentifier:@"info"];
[self.navigationController pushViewController:info animated:YES];