2011-08-08 8 views
0

私は静的なテーブルビュー(FirstViewController)を持っています.3行目はそれぞれ独自のセクションにあります。最初の2つのセルにはUITextFieldがあり、ユーザーがセルまたはセルをタップすると編集可能です。最後のセルにはUILabelがあり、タップすると、UITextFieldを含むSecondViewControllerをプッシュします。ユーザーがUILabelの値を押すと、UITextFieldの値になる必要があります。2番目のビューコントローラーでUITableViewのテキストを編集する

FirstViewControllerに設定されているSecondViewControllerにデリゲートプロパティ(代入)を作成した場合、FirstViewControllerはまだメモリにあり、nillではないという保証はありますか?私がすぐに理解するように、ビューコントローラは一番上のビューコントローラ(目に見えるコントローラ)ではなく、割り当てを解除することができます。デバイスがメモリ不足になってFirstViewControllerの割り当てが解除された場合、ユーザが戻るとreturnメソッドが送信されず、delegateはnilになります。その後、FirstViewControllerの新しいインスタンスが作成され、ポップされますSecondViewControllerから値を受け取らずに、画面に表示されます。

私は個人的にちょっと混乱していると思うので、私はAppDelegateで "グローバル"変数を使いたくありません。

答えて

0

変数または配列のプロパティを設定することができます(のデータを表示するために、UITableView)。オブジェクトがインスタンス化されているかどうかをチェックするデータクラスにクラスメソッドを実装します。もしそうでなければ、そうする。それはこのようなものです:

DataClass *obj=[DataClass getInstance]; 

と配列を使用します。

//DataClass.h  

@interface DataClass : NSObject { 

NSMutableArray *nameArray; 
NSMutableArray *placeArray;  

} 
@property(nonatomic,retain)NSMutableArray *nameArray; 
@property(nonatomic,retain)NSMutableArray *placeArray; 
+(DataClass*)getInstance; 
@end 


//DataClass.m 
@implementation DataClass 
@synthesize nameArray; 
@synthesize placeArray; 
static DataClass *instance =nil; 
+(DataClass *)getInstance 
{ 
    @synchronized(self) 
    { 
     if(instance==nil) 
     { 

      instance= [DataClass new]; 
     } 
    } 
    return instance; 
} 

は、今すぐあなたのビューコントローラであなたは、このメソッドを呼び出す必要があります。 この方法では、妨げなくデータを割り当てることができますAppDelegate、これは良い習慣です。

関連する問題