2013-10-06 31 views
-1

我可以通過NSObject將表中的數據傳遞給其他表嗎?通過NSObject將數據UItable傳遞給UItable

例子:

首先表發送數據

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
    Data *g = [[Data alloc]init]; 
    [g setSelection1:(int)path.row]; 
} 

NSLog測試selecttion1 value = path.row;

當我使用第二個表我導入數據或Alloc,但我在選擇1的值丟失。

它總是0;

+0

用於從一個'UIViewController'將數據傳遞到另一個的常用方法是通過添加屬性到目的地視圖控制器,並且在'prepareForSegue'期間在目標視圖控制器上設置屬性的值。在提供的代碼示例中,我沒有看到目標視圖控制器上的屬性值的設置。 – bobnoble

+0

因此,您的數據沒有傳遞到第二個表,但是當切換回第一個表時,數據會丟失?你能澄清嗎? – Unheilig

回答

0

嘗試這種情況:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"<YOUR_SEQUE_IDENTIFIER_GOES_HERE>"]) 
    { 
     <YOUR_CONTROLLER> *destController = (<YOUR_CONTROLLER> *) 
               segue.destinationViewController; 

     NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
     Data *g = [[Data alloc] init]; 
     //if you would like to re-use this data source, I would suggest making this as a 
     //property within this class 

     [g setSelection1:(int)path.row]; 
     [destController setMyData:g]; 
    } 
} 

在你的第二表,聲明一個屬性:

@property (strong, nonatomic) Data *myData; 
0

您的數據對象不會爲您提供服務,因爲您尚未將它傳遞給目標視圖控制器。

你可以像下面這樣做

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
    Data *g = [[Data alloc]init]; 
    [g setSelection1:(int)path.row]; 

    MyTargetViewController *targetVC = segue.destinationViewController; 
    [targetVC setData:g]; 
} 

在這裏與你的實際目標視圖控制器替換「MyTargetViewController」。