0

UIViewController保存ボタン付きです。クリックすると、. にある配列に文字列が追加されますUITableViewController。テーブルビューに移動するセグエがあり、配列内の新しいオブジェクトをテーブルの行として表示したい。

ビューコントローラーからデータを取得して、テーブルビューコントローラーに表示するにはどうすればよいですか?
私がやっていることはうまくいきません。

UIViewController:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([[segue identifier] isEqualToString:@"showFindTable"])
    {
        FindTableViewController *findTableVC = [segue destinationViewController];
        findTableVC.titles addObject:titleField.text];
        [findTableVC.tableView reloadData];
    }
}

UITableViewController:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.titles = [[NSMutableArray alloc] init];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"FindCell";
    FindTableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    cell.title.text = [self.titles objectAtIndex:[indexPath row]];

    return cell;
}

テーブル ビュー コントローラー内で、配列を初期化します。viewDidLoadオブジェクトを追加すると、呼び出されたときに空の配列に戻りますか? 最終的には Core Data を使用してデータを永続化する予定です。それで、これが問題であれば、それで解決すると思います。それまでは、どうすればそれを機能させることができますか?

タイトル配列を 1 つの文字列で初期化しようとしました。その文字列が表示されます。テーブルビューがロードされるたびに配列を再初期化しているため、それはそのように見えます。どこで配列を初期化する必要がありますか?

4

2 に答える 2

0

デリゲートを使用できます。

ViewController.h(デリゲートを宣言する)

@protocol delegateName <NSObject>
- (void)prepareForSegue:(NSString)strToAdd;
@end

ViewController.m

- (void)save:(id)sender {
   [delegete prepareForSegue:titleField.text];
}

UITableViewController

- (void)prepareForSegue:(NSString)strToAdd {
  [self.title addObject:strToAdd];
  [self.tableView reloadData];
}
于 2012-06-04T17:41:59.170 に答える
0

私のプロジェクトでは、このように使用しました

次のように、セルにデータを追加するクラスのオブジェクトを作成します。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   static NSString *CellIdentifier = @"WhatsNewCell";

WhatsNewCell *cell = (WhatsNewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//if (nil == cell)
{
    cell = [[WhatsNewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
return cell;
}

ただし、ここで WhatsNewCell はUITableViewCellのサブクラスで あり、そのクラスでメソッドを作成して次のように追加します

 - (void)createCellLabels
{    

albumNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(15.0, 5.0, 200.0, 50.0)];
albumNameLabel.textAlignment = UITextAlignmentLeft;
albumNameLabel.textColor = [UIColor colorWithRed:0.14 green:0.29 blue:0.42 alpha:1]; 
albumNameLabel.font =  [UIFont boldSystemFontOfSize:15.0];
albumNameLabel.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:albumNameLabel];

artistNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(15.0, 28.0, 200.0, 50.0)];
artistNameLabel.textAlignment = UITextAlignmentLeft;
artistNameLabel.textColor = [UIColor grayColor];
artistNameLabel.font =  [UIFont boldSystemFontOfSize:12.0];
artistNameLabel.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:artistNameLabel];

genresLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(5.0, 0.0, 200.0, 25.0)];
genresLabel1.textAlignment = UITextAlignmentLeft;
genresLabel1.textColor = [UIColor colorWithRed:0.14 green:0.29 blue:0.42 alpha:1]; 
genresLabel1.font =  [UIFont boldSystemFontOfSize:15.0];
genresLabel1.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:genresLabel1];

}

あなたに役立つかもしれません。

于 2012-06-04T16:12:39.927 に答える