2016-11-07 19 views
0

ボタンにテキストフィールドの値を送信する必要がある状況があります。2番目のviewcontrollerをクリックして2番目のView Controllerを表示し、tableviewに表示しますが、2番目のView Controller DISコード別のviewcontrollerでtableviewにテキストフィールド値を送信する方法

viewcontroller.h 
@interface ViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UITextField *textfiled; 

@end 

viewcontroller.m 


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    NextViewController*nxt=segue.destinationViewController;  
    nxt.sr=_textfiled.text; 

    } 

NextviewController.h 

@interface NextViewController : UIViewController 
@property (strong,nonatomic)NSMutableArray*arr; 
@property (strong, nonatomic) IBOutlet UITableView *table; 
@property(strong,nonatomic) NSString*sr; 

Nextviewcontroller.m 

@interface NextViewController()<UITableViewDataSource> 

//@property(strong,nonatomic)NSMutableArray*finalarr; 
@end 

@implementation NextViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [_arr addObject:_sr]; 
    [_table reloadData]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 

    return _arr.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
      UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:@"cell"]; 
      cell.textLabel.text=[_arr objectAtIndex:indexPath.row]; 
      return cell; 
} 
+0

各重要なステップでプロセスを停止するには、ブレークポイントを使用します(segue、viewdidload、cellforrowの準備)。 あなたの文字列がどこで設定されているのか、それがどこにあるのかを見てください。データが欠落している場所を簡単に見つけることができます。調査することができます。これは非常に簡単な問題です、あなたはこのためにstackoverflowを尋ねる必要はありません。 –

答えて

0

では、WebでのCookieやセッションのような

+0

私はios developmentを初めて利用しています。より具体的にすることができますか?prepareforsegueメソッドを使用する方法はありません – Nishanth

+0

NSUserDefaultsを使用しないでください。非常に悪いことです。 あなたの情報のために、NSUserDefaultsはキーと値の永続的な記憶域です。通常、ユーザー名やいくつかの永続的な設定を思い出すようなものに使用します。データを渡すためにこれを使用することはありません。 –

+0

@ニシャンツは、あなたが使いたくない場合は練習しないでください。nsuserdefaultあなたが最初のコントローラーで渡すために第2コントローラーから無効なパラメーターを呼び出すことができます –

0
//The below should not be used in prepare segue.use in any button action. 

if(!secondVC) { 
secondVC = [UIStoryboard storyboardWithName:@"Main" 
           bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"SecondVCIdetifier"]; 
} 
secondVC.tempString = tf.text; 
[self presentViewController:secondVC animated:YES completion:nil]; 
+0

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NextViewController * nxt = segue.destinationViewController; NSLog(@ "%@"、_ textfiled); nxt.sr = _textfiled.text; } – Nishanth

+0

私はこれをpreparefrgueで書いていますが、第2ビューコントローラのviewdidloadに何を書いてください。 – Nishanth

+0

まず、tempStringのテキストを見ることができますか?あなたはテーブルビューのセルにその文字列を入れたいですか?はいの場合は、[TableView reloadData]をNextViewController viewdidloadメソッドに記述します。 – MuraliMohan

0

を通過させるためのnsuserdefaultsを使用することができます[_arr addObject:_sr];最初のを見てください。 _srの値が空であるかどうかを確認してください。はいの場合、問題はそれ以前であり、そうでない場合は問題が後になります。

そこから、正確な問題を正確に突き止めることができます。あなたが文字列データを全く取得しないか、またはsegueを使用していないので、prepareforsegueが呼び出されていないと言うでしょう。

ブレークポイントの使用方法を学びます。もしあなたがどうしたらいいか分からないなら、それを見て、それは信じられないほど簡単で、それはあなたの仕事の70%です。

そのアドバイスだけで、あなたの問題を解決することができます。

関連する問題