2012-11-30 109 views
1

我讀了這個tutorial關於iPhone開發板上的故事板。這傢伙通過一個按鈕改變了觀點。但是按鈕的連接是通過界面生成器完成的。我怎樣才能以編程方式執行此操作,因此我可以在視圖更改之前進行一些檢查(例如用戶名/密碼)? 在此先感謝。iphone - 以編程方式更改按鈕的視圖

回答

2

連接一個視圖與其他(不是按鈕與視圖)。 將segue更改爲custom併爲其指定標識符(在IB中)。例如:登錄

然後創建一個操作並將其分配給按鈕。

在按鈕操作使用:

[self performSegueWithIdentifier:@"Login" sender:self]; 

創建Segue公司類對象,並在.M使用類似:

UIViewController *dst = [self destinationViewController]; 
UIViewController *nav = [self sourceViewController]; 

//All your custom code 

[nav presentModalViewController:dst animated:YES]; 

編輯:忘記一些重要的事情!

在IB中,在Segue配置中,放入Segue類,創建Segue類的名稱。例如:LoginSegue是SEGUE創建的名稱,在Segue公司類喲已經寫「LoginSegue」

編輯:創建類:

1.-創建擴展UIStoryBoardSegue一個新文件時,會.H是這樣的:

#import <Foundation/Foundation.h> 

@interface LoginSegue : UIStoryboardSegue 

@end 

2:在實現中,使用上面的代碼稱爲方法中執行:

-(void)perform 
{ 

UIViewController *dst = [self destinationViewController]; 
UIViewController *nav = [self sourceViewController]; 

//Custom Code 

[nav presentModalViewController:dst animated:YES]; 

} 

如果您需要訪問源碼的特性Ë的viewController,您需要更改:

UIViewController *nav = [self sourceViewController]; 

eYourClass *nav = [self sourceViewController]; 

希望這有助於!

+1

你能解釋一下你說「創建一個Segue類」是什麼意思嗎? – ozmax

+0

UIStoryBoardSegue的擴展類。要編輯答案添加它 – Vertig0

+0

我看到我必須重寫執行方法。任何線索我應該怎麼做? (順便說一句,我使用導航控制器 - 我不想使用模態) – ozmax

0

您可以創建按鈕和touchUpInside動作拖動到IBAction在Interface Builder

或代碼viewDidLoad

[self.login addTarget:self action:@selector(loginTapped) forControlEvents:UIControlEventTouchUpInside]; 

某處然後loginTapped方法可能看起來像

- (void)loginTapped; 
{ 
    if ([self authenticateWithUsername:self.username.text password:self.password.text]) { 
    [self performSegueWithIdentifier:@"loginSuccessful" sender:self]; 
    } else { 
    // Warn user about invalid username/password 
    } 
} 

這依賴於您在故事板中創建了一個名稱與012匹配的segue參數

相關問題