2014-02-06 259 views
1

我想實現一個幻燈片菜單,其中當您選擇一個選項時,它將變量值發送到第二個視圖控制器,其中有一個查詢從解析,這將更新基於從滑動菜單中選擇的值。從didSelectRowAtIndexPath傳遞數據到另一個視圖控制器ios7

如何傳遞的變量從didSelectRowAtIndexPath方法到另一視圖控制器

menuViewController.h
@property (strong, nonatomic)NSString *passVariable; 

menuViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

NSString *identifier = [NSString stringWithFormat:@"%@", [self.menu objectAtIndex:indexPath.row]]; 

UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:identifier]; 
    _passVariable = @"FieldName"; 


[self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{ 
    CGRect frame = self.slidingViewController.topViewController.view.frame; 
    self.slidingViewController.topViewController = newTopViewController; 
    self.slidingViewController.topViewController.view.frame = frame; 
    [self.slidingViewController resetTopView]; 
}]; 

} 

SecondViewController.m
NSString *vName = MenuViewViewController.passVariable; 

嘗試了上面的內容,但passVariable在第二個ViewController.m中不起作用

+0

要清楚的是,這個'didSelectRowAtIndexPath'方法在MenuViewController中嗎?另外,這'newTopViewController'是'SecondViewController'? – Shabib

+0

是它在菜單vie控制器,並且newTopViewController不是第二個viewcontroller – mugunthan

回答

3

您希望將對象「推」到下一個視圖控制器,而不是將它們從先前的viewController中拉出。

創建您的SecondViewController一個@property (copy, nonatomic) NSString *fieldName;和使用這樣的:因爲我看到

SecondViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:identifier]; 
newTopViewController.fieldName = @"FieldName"; 
+0

我必須聲明一個標識符,第二個選項獲取錯誤「使用未聲明的標識符」 – mugunthan

0

兩種可能性:

1)嘗試使用Singleton方法:(如果可能的和必要的)

在menuViewController :

[Singleton sharedInstance].passVariable = @"yourValue here" 

在secondViewController下viewDidLoad

someProperty = [Singleton sharedInstance].passVariable; 

2)通過使財產secondViewController嘗試:

@property (nonatomic, copy) NSString * passVariable; 

合成它:

@synthesize passVariable; 

現在menuViewController這樣寫:

SecondViewController *newTopViewController = (SecondViewController*)[self.storyboard instantiateViewControllerWithIdentifier:identifier]; 

newTopViewController.passVariable = @"yourValue here"; 
+0

,passVariable不顯示作爲選項,保留說沒有什麼叫傳遞變量 – mugunthan

+0

轉換爲適當的控制器實例 – NeverHopeless

+0

我將它添加到.h文件中,但它仍然不顯示爲一個選項時,我添加點語法的視圖控制器名稱 – mugunthan

相關問題