2012-03-20 89 views
0

我只是爲了學習更客觀的目的而提出申請。這個應用程序基本上把用戶帶到模態視圖,然後給用戶選項(uibuttons)點擊。當用戶點擊一個按鈕時,模式視圖被解除,我想從該按鈕中獲取數據(無論是按鈕標籤,標籤等,哪一個最容易使用)並將其作爲變量存儲我的主要觀點。我曾嘗試使用在單獨的.h文件中定義的外部NSString,但沒有運氣。我錯過了什麼?將數據從視圖傳遞到視圖?

+0

請把你的代碼,以便我們可以幫助你.. – nithin 2012-03-20 06:07:51

回答

0

你必須使用委託方法來傳遞價值看到蘋果文檔

1

使用代表團。制定一個協議。

@protocol SelectValueDelegate <NSObject> 
@optional 
- (void) selectedValue:(NSString *)values selectionViewController:(UIViewController *)controller; 
- (void)selectionCanceled:(UIViewController *)controller; 
@end 

實現它你MainViewController.h

@interface MainViewController : UIViewController<SelectValueDelegate> { 
    //.... 
} 

.m文件中是這樣的:

- (void) selectedValue:(NSString *)values selectionViewController:(UIViewController *)controller 
{ 
    //here you have value. 
    [controller dissmissModalViewControllerAnimated:YES]; 
} 
- (void)selectionCanceled:(UIViewController *)controller 
{ 
     [controller dissmissModalViewControllerAnimated:YES]; 
} 

,並在您ModalViewController作出這樣委託的屬性:

@interface ModalViewController : UIViewController 
     id<SelectValueDelegate> delegate; 
} 
@property(assign)id delegate; // synthesize it also 

現在按一下按鈕做這樣的事情:

-(IBAction)buttonClicked:(id)sender 
{ 
     [delegate selectedValue:@"Value" selectionViewController:self]; 
} 

和內部MainViewController模態呈現時,做這樣的事情:

ModalViewController *screen = [[ModalViewController alloc] initWithBlahblah]; 
screen.delegate = self; 
[self.navigationController presentModalViewControllerAnimated:YES]; 
+0

我要給這個嘗試 - 它看起來直接和有用。謝謝! – Radrider33 2012-03-20 14:57:34

0

您可以將數據存儲在的appDelegate對象這是代表文件的應用程序,

你可以的appDelegate聲明對象:

NSString *buttonName; 

然後對這個對象進行屬性和綜合。

這樣做了以後,放碼您正在打開一個模態的視圖的視圖控制器:甚至解僱模態視圖後

appDelegate.buttonName = yourbutton.titleLabel.text; 

現在,你將已經存儲在按鈕的標題appldelegate的對象,並且您可以從應用程序中的任何位置訪問它。

0

假設您將兩個viewcontrollers說一個 &

你A.^ h

{ 
    NSString *strData; 
    int cId; 
} 

@property (nonatomic, retain) NSString *strData; 
@property (readwrite) int cId; 

現在在你時三十分

@synthesize strData,cId; 

你B.h

@class A 

{ 
    A *aObj; 
} 

現在在你B.m

#import "A.h" 

- (void) viewDidLoad 
{ 
    aObj=[A alloc] init]; //alloc object of A 
    [aObj setCId:10]; //set value for cId 
    [aObj setStrData:@"Hello from B"]; //set value for strData 
    //do what ever 
    [aObj release]; //don't forget 
} 
相關問題