xcode添加按钮到导航栏

时间:2011-11-23 19:48:51

标签: objective-c uikit uinavigationbar

我正在制作一个简单的应用程序来显示饮料细节,现在我正在尝试添加一个允许用户输入自己饮料的视图。我已经创建了一个显示细节的视图,现在我只是将视图传递给另一个控制器来制作添加饮料视图。问题是,当我尝试添加“取消”和“保存”按钮时,它不会出现,尽管代码符合而没有任何错误。我附上了代码作为参考。

这是在按下添加按钮时创建新视图的代码。 (我制作了一个有效的添加按钮,然后拉出导航栏)

- (IBAction)addButtonPressed:(id)sender {

    AddDrinkViewController *addViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailSecond"];
    UINavigationController *addNavController = [[UINavigationController alloc] initWithRootViewController:addViewController];

    [self presentModalViewController:addNavController animated:YES];



    NSLog(@"Add button pressed!");

这是addviewcontroller实现文件中的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save:)];

}

- (IBAction)save:(id)sender {

    NSLog(@"Save Pressed");
    [self dismissModalViewControllerAnimated:YES];

}

- (IBAction)cancel:(id)sender{

    NSLog(@"Cancel Pressed");
    [self dismissModalViewControllerAnimated:YES];
}

我已将addview中的标头导入到根控制器中,所以我不认为这是问题,你们中的任何人都会看到任何错误吗?

2 个答案:

答案 0 :(得分:1)

只需更改行

即可
[self presentModalViewController:addNavController animated:YES];

[self presentViewController:navigationController animated:YES completion:nil];

看到了魔力。我还测试了代码

答案 1 :(得分:0)

我的建议是在运行应用程序的XIB文件中的任何代码之前为视图创建模板。在分配全新视图后尝试设置每个按钮,而不是在事先设置XIB中的新按钮,而是允许您将每个元素与应用程序链接,并确保在调试之前看起来恰到好处。

只需进入“[Your-App-Name] viewController.xib”,然后将视图从对象库拖到左侧的窗格中。从这里添加每个元素并将它们放在视图所需的位置。现在在“[Your-App-Name] viewController.h”文件中,为每个需要更改的元素添加IBOutlets,并为每个按钮添加IBActions。还为新视图创建一个IBOutlet。

IBOutlet UIView* addDrinkView;

返回XIB文件,使用文件所有者将每个插座链接到每个元素,将每个方法链接到每个按钮。确保链接IBOutlet

现在,在您的“[Your-App-Name] viewController.m”文件中,您可以定义每个按钮方法,只需执行以下操作即可访问新视图并解除以下内容:

-(IBAction)openAddView
{
     [self setView:addDrinkView];
}
-(IBAction)saveButtonPressed
{
     [self setView:view];
     //save code goes here
}
-(IBAction)cancelButtonPressed
{
     [self setView:view];
     //cancel code goes here
}

这比尝试将所有内容放在代码中要容易得多。

希望这有帮助!