2012-09-03 49 views
1

我是IOS編程的新手。到目前爲止,我一直在Android編程。因此,在機器人當按下一個按鈕的代碼爲傳遞一個參數是這樣的:按下按鈕後傳遞參數在IOS中查看

Intent i = new Intent(MainScreen.this,OtherScreen.class); 
Bundle b = new Bundle(); 
b.putString("data_1",data); 
i.putExtras(b); 
startActivity(i); 

,並在打開的活動,我會寫這樣的事情:

Bundle b = getIntent().getExtras(); 
ski_center=b.getString("data_1"); 

我應該需要什麼樣的方法在MainScreen和IOS中的OtherScreen中進行更改以實現上述目標。

基本上我會有3個按鈕可以在我的MainScreen中說,每個按鈕都會打開Otherview,但每次都會傳遞一個不同的參數。

敵人例如爲每個按鈕,我有這樣的代碼MainScreen.m

@synthesize fl; 
-(IBAction) ifl:(id) sender { 
} 

所以,我需要你在哪裏放置「丟失」的代碼的幫助了。

+0

沒有意圖。你會直接調用其他視圖的構造函數。 – govi

+0

@govi:在最常見的情況下,您不會直接創建視圖。您創建控制器層次結構。我認爲ghostrider的問題更多地轉化爲iOS和res概念的基本方向。 Objective-C的。 –

回答

2

爲您的UIViewController(Android的Activity)聲明一個iVar,就像Java中的一個屬性。

在MainViewController.m

OtherUIViewController * contr = [[OtherUIViewController alloc] initWithNibname...]; 
contr.data = yourData; 

編輯:加入全碼...

意圖I =新意圖(MainScreen.this,OtherScreen.class); Bundle b = new Bundle(); b.putString(「data_1」,data);

這裏的MainScreen是調用代碼,現在iOS中這將是MainUIViewcontroller

  • 創建OtherUIViewController這樣的:

OtherUIViewController.h

@interface OtherUIViewController : UIViewController 
{ 
     NSData* data; 
} 
@property (strong, nonatomic) NSData* data; 

在OtherUIViewController.m

@implementation OtherUIViewController.m 
@synthetize data; 

// override 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// do something with data here 
} 

有3種不同的行爲,數據可以是int或NSString。 而在- (void)viewDidLoad中,您將檢查data的值並做3個不同的事情。我希望它有幫助

+0

爲了清楚起見,我在我的OtherView.h 和myScreen.m中聲明瞭一個ivar,我在我的IBaction中添加了以下代碼? (其中IBaction是觸發視圖更改的函數)。 對不對? – ghostrider

+1

在.h聲明ivar和@property,在.m中聲明@ synthesisize屬性。比使用上面給出的代碼,你會推到wievcontroller這個控制器,這將觸發UIViewcontroler生命週期中的很多功能,並從一個比你會使用給定的參數,如在:viewDidload – 2012-09-03 21:06:00

+0

好吧,我明白了。所以我最後的問題是在哪裏放置給定的代碼?在MainScreen.m或OtherView.m中?我猜想在MainScreen中。如果是,在哪些方法? – ghostrider