2017-07-08 9 views
0

にセルを追加するUIAlertControllerボタン:今すぐにObjC - 私にこの警告制御機構を示し、私は私のtableView、BarButtonItemを持っているテーブルビュー

UIAlertController * alertController = [UIAlertController alertControllerWithTitle: @"Feed RSS: info?" 
                      message: @"" 
                    preferredStyle:UIAlertControllerStyleAlert]; 

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
    textField.placeholder = @"Feed URL"; 
    textField.clearButtonMode = UITextFieldViewModeWhileEditing; 
    textField.borderStyle = UITextBorderStyleRoundedRect; 
}]; 

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
    textField.placeholder = @"Feed Title"; 
    textField.clearButtonMode = UITextFieldViewModeWhileEditing; 
    textField.borderStyle = UITextBorderStyleRoundedRect; 
}]; 

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
    textField.placeholder = @"Feed category"; 
    textField.clearButtonMode = UITextFieldViewModeWhileEditing; 
    textField.borderStyle = UITextBorderStyleRoundedRect; 

}]; 
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 

    NSArray * textfields = alertController.textFields; 

    UITextField * urlfield = textfields[0]; 
    UITextField * titlefield = textfields[1]; 
    UITextField * categoryfield = textfields[2]; 

}]]; 

[self presentViewController:alertController animated:YES completion:nil]; 

、私は私がで「OK」を押したときと言いたいですアラートコントローラでは、テキストフィールドの1つのテキストがテーブルビューの最初のセルに書き込まれます。次に、他のデータを入力すると、テーブルビューの2番目のセルなどに表示されます。

あなたによれば、どうすればよいですか? この部分を修正する必要がありますか?

[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 

ありがとう!

+0

セルの作成コードを追加してください。それから私は明確に答えを追加することができます – Subramanian

+0

@Subramanian私はそれを作成することができなかったので、私はセルの作成のためのコードがありません。私が「OK」ボタンを押すと、セルが作成されなければなりません。空のダイナミックテーブルのみが表示されます。 – Taprolano

答えて

1

アラートコントローラのtextFieldにユーザーが入力したデータを保存するモデルクラスを作成します。一度行わ

@interface FeedInfo : NSObject 
    @property (nonatomic,strong) NSString *feedURL; 
    @property (nonatomic,strong) NSString *feedTitle; 
    @property (nonatomic,strong) NSString *feedCategory; 
@end 

、ユーザーが入力した複数のフィード情報を保持するためにNSMutableArrayを作成します。あなたのTableViewControllerで今

@interface ViewController() 
@property(nonatomic,strong) NSMutableArray *feedArray; 
@end 

書くFeedArrayにエントリを作成するためにあなたの警報コントローラのOKアクションを変更します。上記のように

[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 

     NSArray * textfields = alertController.textFields; 

     UITextField * urlfield = textfields[0]; 
     UITextField * titlefield = textfields[1]; 
     UITextField * categoryfield = textfields[2]; 

     FeedInfo *newFeed = [[FeedInfo alloc] init]; 
     newFeed.feedURL = urlfield.text; 
     newFeed.feedTitle = titlefield.text; 
     newFeed.feedCategory = categoryfield.text; 


     [self.feedArray addObject:newFeed]; 
     [self.tableView reloadData]; 
    }]]; 

アレイにエントリを追加した後は、[self.tableView reloadData];を使用してのtableViewをリロードします。

以下のように、UITableViewのデリゲートとデータソースを実装します。

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

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

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    YourCellSubclass *cell = [self.tableView dequeueReusableCellWithIdentifier:@"your_cell_identifier"]; 
    FeedInfo *feedToShow = [self.feedArray objectAtIndex:indexPath.row]; 
    cell.feedTitle.text = feedToShow.feedTitle; 
    return cell; 
} 

作成したFeedArrayをtableViewデータソースとして使用します。 cellForRowAt index pathで、対応するFeedObjectにアクセスし、UITableViewCellのフィールドに値を設定します。

デフォルトセルを使用することも、独自のカスタムセルを使用することもできます。それはすべて必要です。カスタムセルを読み込む方法について疑問がある場合は、 How to load custom cell (xib) in UICollectionView cell using swift

+0

cell.feedTitle.text = feedToShow.feedTitle;動作しません! :( – Taprolano

関連する問題