2014-02-17 103 views
-1

我是新手開發iOS程序,我需要你的幫助。如何停止按鈕

當我按一下按鈕,我的代碼檢查一個條件,如果條件是真的,我想訪問到下一個UIViewController傳遞數據與prepareForSegue,但如果條件FALSE,我不想訪問到下一個VC,並保持當前VC

我該怎麼做?

當我點擊我的按鈕,我直接訪問下一個VC,無論代碼IBAction。是否有可能阻止訪問?

我嘗試代碼上的按鈕

- (IBAction)lancepartie:(id)sender { 
... 
+0

顯示整個方法請 –

+0

沒什麼用處......這只是我的條件。 – user3277279

+0

你有兩個segue和這個動作連接到故事板上的按鈕嗎? – Gavin

回答

0
- (IBAction)lancepartie:(id)sender { 
    BOOL someConditionHasBeenMet = NO; 
    // check condition 
    if (someConditionHasBeenMet) { 
     // push view controller 
    } else { 
     // nothing 
    } 
} 
+0

//推視圖控制器我怎麼能這樣做?對newt VC的啓動是自動的,不是? – user3277279

0

試試這個代碼

- (IBAction)lancepartie:(id)sender 
{ 
    if(Your_Condition_Is_True){ 
     [self performSegueWithIdentifier:@"Your_Segue_Identifier" sender:sender]; 
    } 
    else { 
     //do not switch controller 
    } 
} 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"Your_Segue_Identifier"]) { 

    } 
} 
+0

我如何編程以「不切換控制器」? – user3277279

+0

如果你的條件是錯誤的,在下面的代碼中什麼都不會發生。只是不要在else塊中寫任何代碼。簡單 – Pawan

1

其他的答案應該可行,但他們那種忽視塞格斯整點:你不應該在segues之類的按鈕上手動設置動作。相反,您應該覆蓋- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender選擇器。

要做到這一點,你需要給你的賽格瑞從Interface Builder的一個標識符,那麼在你的父視圖控制器添加以下代碼:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString*)identifier sender:(id)sender 
{ 
    if ([identifier isEqualToString:@"MyIdentifier"]) 
    { 
     return someCondition; 
    } 
    else return YES; 
}