1

複数のビューを持つアプリケーションに取り組んでおり、あるビューからデータを取得し、別のビューのテーブルに格納しています。私は、計算ボタンとボタンが別のセルのUITable内の独自のセルにそれらのラベルからのデータを保存しようとしているときに、データで更新されるラベルを持っています。UITable を設定して新しいセルを作成し、検証ボタンが押されるたびにそのセルにデータを渡す方法について、現在迷っています。

4

2 に答える 2

0

つまり、ボタンを押すだけで UILabels のテキスト値を UITableViewCells に保存したいということですか?

この場合、次のように、ボタンがクリックされるたびに、各テキスト値を要素として NSArray に保存します。

// Given:
// 1.) Your labels are IBOutlets
// 2.) Your labels follow the naming convention label1, label2, label3, etc
// 3.) You have an initialized class variable NSMutableArray *labels
// 4.) NUM_OF_LABELS_IN_VIEW is the number of UILabels in your view
// 5.) myTableView is an outlet to your UITableView, and its delegate and datasource are set to your view controller

-(IBAction)buttonPressed:(id)sender{
    self.labels = [[NSMutableArray alloc] init];
    for (int i=0; i < NUM_OF_LABELS_IN_VIEW; i++){
         [labels addObject:[self valueForKey:[NSString stringWithFormat:@"label%i", i]].text ];
    }

    [self.myTableView reloadData];
}

また、データ ソース メソッドは次のようになります。

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

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


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellIdentifier = @"MyCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if(!cell) {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:Cellidentifier];
    }
    cell.textLabel.text = self.labels[indexPath.row];
    return cell;
}

UITableView が別のビュー コントローラーにある場合は、表示しているビュー コントローラーNSArray *labelsの @property に を割り当てるだけです。

于 2013-06-17T19:10:41.503 に答える
0

これは基本的な MVC の動作です。テーブル セルは、表示時に UITableView データソース デリゲート メソッドに読み込まれます。あなたの場合、おそらく配列である、ある種のストアからデータをロードする必要があります。

(どこからでも) データを更新する場合は、データ ストア (配列) を更新するだけです。

reloadDataメソッドを使用して (またはビューが表示されるたびに) UITableView をリロードします。

于 2013-06-17T19:03:35.870 に答える