2011-11-23 213 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]; 

,看到了魔術。我也測試了代碼