我正在开发一个具有多个视图的应用程序,从一个视图中获取数据并将其存储在另一个视图的表中。我有一些标签,当计算按钮和按钮有希望将这些标签中的数据存储在另一个单元格中的UITable中的自己的单元格上时,会更新数据。我现在迷失了如何设置我的UITable来创建一个新单元格,并在每次按下验证按钮时将数据传递给该单元格。
答案 0 :(得分:0)
这是基本的MVC行为。表格单元格在显示时加载到UITableView数据源委托方法中。应该从某种类型的商店加载数据,在您的情况下很可能是数组。
如果要更新数据(从任何地方),只需更新数据存储(数组)。
使用reloadData
方法(或视图出现时)随意重新加载UITableView。
答案 1 :(得分: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即可。