[英]Passing data from view to view?
我僅出於學習更加客觀的目的而提出申請。 該應用程序基本上將用戶帶到模式視圖,然后為用戶提供要單擊的選項(uibutton)。 當用戶點擊一個按鈕時,模式視圖將關閉,我想從該按鈕中獲取數據(無論是按鈕,標簽等的標題,以最容易使用的為准),並將其作為變量存儲在我的主要觀點。 我嘗試使用在單獨的.h文件中定義的extern NSString,但是沒有運氣。 我想念什么?
使用委托。 制定協議。
@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];
您必須使用委托方法來傳遞值,請參閱Apple文檔
您可以將數據存儲在appDelegate中的對象中,該對象是應用程序的Delegate文件,
您可以在appDelegate中聲明一個對象:
NSString *buttonName;
然后對對象進行屬性化和綜合化。
完成此操作后,在要作為模態視圖打開的視圖控制器中放入一個代碼:
appDelegate.buttonName = yourbutton.titleLabel.text;
現在,即使關閉了模態視圖,您也將按鈕的標題存儲在appldelegate的對象中,並且可以從應用程序中的任何位置訪問它。
假設您有兩個視圖控制器說A和B
你的啊
{
NSString *strData;
int cId;
}
@property (nonatomic, retain) NSString *strData;
@property (readwrite) int cId;
現在在你的我
@synthesize strData,cId;
你的Bh
@class A
{
A *aObj;
}
現在在您的Bm中
#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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.