2012-05-03 6 views
-1

私はテキストフィールドで警告表示用のコードを実装しました。ここでokボタンをクリックすると、入力されたテキストフィールドの値が文字列formate(str)として格納されています。ここで問題が発生するたびにテーブルビューは1つの項目で構成されますが、複数の項目をアラートから項目を入力して保存し、この項目をアレイ項目として保存する必要があります。 iPhoneで。alertviewで複数の配列アイテムを保存するコードを実装する方法は?

myAlert = [[UIAlertView alloc] initWithTitle:@"Enter year" 
            message:@"alert message" 
            delegate:self 
          cancelButtonTitle:@"Cancel" 
          otherButtonTitles:@"Ok", nil]; 
[myAlert addTextFieldWithValue:@"" label:@"entervalue"];  
alertTextField=[myAlert textFieldAtIndex:0]; 
alertTextField.keyboardType=UIKeyboardTypeAlphabet; 
alertTextField.clearsOnBeginEditing=YES; 
alertTextField.clearButtonMode=UITextFieldViewModeWhileEditing; 
alertTextField.keyboardAppearance=UIKeyboardAppearanceAlert; 
[myAlert show]; 
[myAlert release]; 


-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex]; 
    if ([buttonTitle isEqualToString:@"Ok"]) { 

     str = alertTextField.text; 

     [savedarray addObject:str]; 
    } 
} 
+0

あなたはその配列に値を保つウィルのでalert.Ifがyesの場合、一度だけ、それを宣言するか、割り当てを示したときに、あなたの配列が割り当てられているかどうかをチェック。 –

+0

そのためには、異なるインデックスの値にすべてのstrを追加し、そのインデックス値のループに使用する必要があります。その後、すべての文字列を別のインデックスの配列に追加してください。 – vishiphone

答えて

2
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex]; 
    if ([buttonTitle isEqualToString:@"Ok"]) { 

    str = alertTextField.text; 

    [savedarray addObject:str]; 
    [self.yourtableview reloadData]; // reload your tableview when add new data in array. 
    } 
} 




- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  { 
return savedarray.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 
cell.textLabel.text = [savedarray objectAtIndex:indexPath.row];  
return cell; 
} 

希望、これはあなたを助ける...

+0

まずは、お友達にまずお伝えいただきありがとうございます提案.iは上記のコードを試してみましたが、完全に動作していますが、アプリケーションを再起動すると、アプリケーションをアンインストールするまで、私はsavedarray items.Howをすべて失います。 – laxmanperamalla

+0

あなたは2つのオプションのために1)sqlite、コアデータを使用する2)plistを使用して文字列を保存する – Nit

+0

NSUSerdefaultsを使用して文字列データを保存しようとしましたが動作しませんでした。 – laxmanperamalla

0

私はuがこのような何かを求めてrをRITていた場合:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex]; 
if ([buttonTitle isEqualToString:@"Ok"]) 
{ 
    str = alertTextField.text; 
    if([savedarray Count] < yourRequiredItemsCount) 
    { 
     [savedarray addObject:str]; 
     alertTextField = @""; 
     [alertView show]; 
    } 
    else 
    { 
     [alertView release];    //Release the Alert here. 
    } 
} 
} 

それは場合に役立ちます教えてください!別のゾルを提供します。

0

savedarrayを正しく割り当てると、投稿されたコードは妥当と見えます。次にチェックするのは、テーブルのデータソースとしてsavedarrayを適切に使用しているかどうかです。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return savedarray.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 
    cell.textLabel.text = [savedarray objectAtIndex:indexPath.row];  
    return cell; 
} 

テーブルビューのデリゲートとデータソースと同じビューコントローラを設定してください。

関連する問題