【问题标题】:xcode adding buttons to navigation barxcode向导航栏添加按钮
【发布时间】:2011-11-23 19:48:50
【问题描述】:

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

这是在按下添加按钮时创建新视图的代码。 (我做了一个有效的添加按钮,它会拉起导航栏)

- (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 文件。
  • 导航栏有没有出现?

标签: objective-c uikit uinavigationbar


【解决方案1】:

换行

[self presentModalViewController:addNavController animated:YES];

到

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

看看魔法。我也测试了代码

【讨论】:

    【解决方案2】:

    我对您的建议是在运行应用程序的 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
    }
    

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

    希望这会有所帮助!

    【讨论】:

    • 我想看看我是否不能只创建另一个视图,而只是从已经存在的视图中传递视图,它基本上是相同的。我正在尝试学习有效编程和养成良好习惯的方法,因为我只是在学习。我有一个进入导航控制器的选项卡视图,它连接到一个表视图,并且该表视图有一个详细视图,这是我传递给 adddetailviewcontroller 的视图。我已经制作了导航控制器,但似乎无法在其中放置按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2018-07-21
    • 2014-06-29
    相关资源
    最近更新 更多