2011-06-24 10 views
1

まずは悪い英語をお詫びしましょう。だから私は別のクラスから1つのクラスのNSStringの値をフェッチするこのプログラムをしようとしています。コードは次のとおりです:iPhone:別のクラスのNSString値にアクセス

/---------------------/tableViewController.h ----------- 

#import <UIKit/UIKit.h> 
@class paisesDetailViewController; 

@interface tableViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>{ 
    IBOutlet UITableView *paisesTableView; 
    paisesDetailViewController *PaisesDetailViewController; 

    //DB 
    NSString *DBName; 
    NSString *DBPath; 
    NSMutableArray *ArrayPais; //means Countrys 
    NSString *escolha; //means choise 
} 

@property(nonatomic, retain) paisesDetailViewController *PaisesDetailViewController; 
@property(nonatomic, retain) NSMutableArray *ArrayPais; 
@property(nonatomic, retain) NSString *escolha; 

@end 




-----------------------------//tableViewController.m--------------- 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSInteger row = [indexPath row]; 
    if(self.PaisesDetailViewController == nil) 
    { 
     paisesDetailViewController *apaisesDetail = [[paisesDetailViewController alloc] initWithNibName:@"paisesDetailView" bundle:nil]; 
     self.PaisesDetailViewController = apaisesDetail; 
     [apaisesDetail release]; 
    } 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    escolha = [[NSString alloc] init]; 
    self.escolha = [NSString stringWithFormat:@"%@", [ArrayPais objectAtIndex:(row)]]; 

    paisesDetailViewController *nextview = [[paisesDetailViewController alloc] init]; 
    [self.navigationController pushViewController:nextview animated:YES]; 
    [nextview release]; 

} 




-----------------------------------//paisesDetailViewController.h------------ 
#import <UIKit/UIKit.h> 
#import "tableViewController.h" 
@class tableViewController; 

@interface paisesDetailViewController : UIViewController { 
    tableViewController *dados; 

} 

@property(nonatomic, retain) tableViewController *dados; 

@end 


//-----------------------paisesDetailViewController.m 
#import "paisesDetailViewController.h" 
#import "tableViewController.h" 

@implementation paisesDetailViewController 
@synthesize dados; 

-(IBAction) createEvent 
{ 
     NSString *help = [[NSString alloc] initWithString: dados.escolha]; 
} 

問題は、 'dados.escolha'は常にnilであり、私は理由を理解できません。 助けてくれてありがとう。

答えて

2

paisesDetailViewController *nextview = [[paisesDetailViewController alloc] init]; 
nextView.dados = self; 
[self.navigationController pushViewController:nextview animated:YES]; 
[nextview release]; 

はUPDATE、これを試してみてください:

は、このコードを試してみてください。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSInteger row = [indexPath row]; 
    if(self.PaisesDetailViewController == nil) 
    { 
     paisesDetailViewController *apaisesDetail = [[paisesDetailViewController alloc] initWithNibName:@"paisesDetailView" bundle:nil]; 
     self.PaisesDetailViewController = apaisesDetail; 
     [apaisesDetail release]; 
    } 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    escolha = [[NSString alloc] init]; 
    self.escolha = [NSString stringWithFormat:@"%@", [ArrayPais objectAtIndex:(row)]]; 

    paisesDetailViewController *nextview = [[paisesDetailViewController alloc] init]; 
    nextView.dados = self; 
    [self.navigationController pushViewController:nextview animated:YES]; 
    [nextview release]; 
} 
+0

これを行いました。ありがとう。しかし、それを動作させるために、私は* dados = [[tableViewController alloc] init]をしなくてはなりませんでした。私がそれをしたたびに私は無益になっています。今それは働いていて、何のメーターですか?Thks – JTFerreira

+0

Superbbb Man ...それは働いた... nextView.dados =自己;私は同様のシナリオのための解決策を探しており、上記の声明を婚約者が解決しました。ありがとうございました... –

0

あなたはtableViewController.mで

@synthesize escolha; 

が含まれていることを確認してください。また、あなたの資本規則は後ろ向きになり、その後も

-(IBAction) createEvent 
{ 
     NSString *help = dados.escolha; 
} 

単純に使用してみてください、あなたが割り当てられていることを確認し、paisesDetailViewController.m

tableViewController *dados = [[tableViewController alloc] init]; 

dadosをインスタンス化します。一般に、クラス名は大文字であり、インスタンスはそうではない。 MyObject *myObject

+0

"tableViewController * dados = [[tableViewController alloc] init];" あなたは「dados = [[tableViewController alloc] init];」を意味しませんでしたか?あなたが私が新しい「鳩」を作っていると言っているようにして... とにかく私はdados.escolhaから何も得られない。 – JTFerreira

0
-(IBAction) createEvent 
{ 
    NSString *help = [[NSString alloc] init]; 

    help = [NSString stringWithFormat: @"%@", self.dados.escolha]; 

    NSLog(@"help is : %@ ", help); 

    // You have synthesized them, so use with self 
} 
+0

self.dados.escolha == nil、同じ問題... – JTFerreira

関連する問題