2011-11-23 137 views
4

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

这是在按下添加按钮时使新视图生效的代码。 (我做了一个附加按钮的工作原理,并拉起导航栏)

- (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成根控制器,所以我不认为这是问题,你们有没有看到有什么不对?

+0

我认为这可能是一个问题,因为我有一个标签栏控制器,或者我是如何制作导航栏的故事板。我正在尝试与故事板学习,但是我正在使用的这本书尚未使用那些东西进行更新,仍在使用笔尖文件。 –

+0

导航栏是否显示? –

回答

0

我的建议是在运行应用程序的XIB文件中的任何代码之前为视图创建模板。在分配全新视图后,不要试图在分配全新视图后设置每个按钮,而是在XIB中手动设置一个新按钮,以便将每个元素与应用程序链接起来,并确保它看起来就在调试之前。

只需进入您的“[你的应用程序名称] 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 
} 

这应该比试图在代码中放置所有东西容易得多。

希望这会有所帮助!

+0

我想知道如果我不能只是创建另一个视图,只是通过基本相同的现有视图。我正在努力学习如何有效地编程和习得良好习惯,因为我只是在学习。 我有一个标签视图进入导航控制器,它连接到一个表视图,该表视图有一个细节视图,这是我传递给adddetailviewcontroller的视图。 我已经做了导航控制器,但似乎无法将按钮放入它。 –

1

只需更改行

[self presentModalViewController:addNavController animated:YES]; 

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

,看到了魔术。我也测试了代码