Xcode添加按钮到导航栏

4
我正在制作一个简单的应用程序来显示饮品详情,现在我正在尝试添加一个视图,允许用户输入他们自己的饮品。我已经创建了一个用于显示详细信息的视图,现在我只是将该视图传递到另一个控制器中以创建添加饮品视图。问题是,当我尝试添加“取消”和“保存”按钮时,它们没有出现,尽管代码没有任何错误。我已经附上了参考代码。
这是当按下添加按钮时创建新视图的代码。(我已经创建了一个可用的添加按钮,并且它会拉起导航栏。)
- (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中的头文件导入到根控制器中,因此我认为这不是问题所在,你们有没有看到任何错误?


我认为问题可能出在我的选项卡控制器上,或者是我在故事板中如何创建导航栏。我正在尝试使用故事板进行学习,但我使用的书籍还没有更新到这方面,仍在使用nib文件。 - Huddy BUddy
导航栏是否出现? - Ignacy Debicki
2个回答

1
只需更改该行。
[self presentModalViewController:addNavController animated:YES];

to

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

并看到魔法。我还测试了代码


0

我给你的建议是,在运行应用程序的XIB文件中的任何代码之前,为视图创建一个模板。与在分配全新视图后尝试设置每个按钮不同,事先在XIB中设置一个新视图可以让您将每个元素与应用程序链接起来,并确保在调试之前它看起来完美无缺。

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

IBOutlet UIView* addDrinkView;

在XIB文件中,使用文件所有者将每个输出链接到每个元素和每个方法链接到每个按钮。确保您链接了IBOutlet。
现在在您的“[您的应用程序名称]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
}

这应该比在代码中尝试定位所有内容要容易得多。

希望这可以帮到你!


我正在尝试看看是否可以不仅创建另一个视图,而且只需从已经存在的基本相同的视图中传递视图。我正在尝试学习高效编程的方法并养成良好的习惯,因为我正在学习。我有一个选项卡视图进入导航控制器,它连接到一个表视图,该表视图具有详细视图,这是我要传递到adddetailviewcontroller的视图。我已经制作了导航控制器,但似乎无法将按钮放入其中。 - Huddy BUddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接