2012-10-22 87 views
1

當我接觸到一個新的viewController時,想傳遞一個參數,讓我們說「turnId」爲一個新的ViewController。我知道我可以在prepareForSegue方法中做到這一點,但我怎樣才能將參數傳遞給prepareForSegue方法本身?我怎樣才能從發件人那裏得到這個?發件人是didSelectRowAtIndexPath,但價值並不居住在一個小區,但只是在didSelectRowAtIndexPath聲明如下:將參數傳遞給一個新的視圖控制器

String *turnId = @"123"; 
+0

這可能會幫助你:http://iphonedevsdk.com/forum/iphone-sdk-development/54859-sharing-data-between-view-controllers-and-other-objects-link-fixed.html –

回答

3

我不會通過它發送信息。

didSelectRowAtIndexPath做你[self performSegueWithIdentifire:@"blah"]然後在prepareForSegue做這樣的事情......

- (void)prepareForSegue:... //blah cant remember the name 
{ 
    if ([segue.identifier isEqualToString:@"blah"]) { 
     NewViewController *controller = segue.destinationViewController; 

     NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow]; 

     //get the object associated with that row and set a variable like... 
     NSString *selectedString = tableObject.name; 

     //Then pass the string into the controller... 
     controller.stringProperty = selectedString; 
    } 
} 

然後在NewViewController.h成立了@property接受這個...

@property (nonatomic, strong) NSString *stringProperty; 

然後你可以從NewViewCongtroller.m訪問此值,並將其值傳遞給它。

+0

好的,但那麼我如何從「selectedIndexPath」變量中獲取NSString值?我是否需要將它暫時保存在單元格中?這個「tableObject」是你的單元格的意思嗎? –

+0

另外,我看到indexPathForSelectedRow在didSelectRowAtIndexPath之外返回nil –

+0

我假設在didSelectRowAtIndexPath中你正在做一些事情來計算這個字符串應該是什麼,這就是你如何得到@「123」。那麼,只需在prepareForSegue中做到這一點。 – Fogmeister

相關問題