我的目标是在屏幕上有三个不隐藏的选择视图。用户使用它们然后单击UIButton,UIButton又将pickerview标题中的三个标题添加到UITableView Cell。
我无法让我的生活得以实现。下面的代码就是我现在玩了大约2到3个小时......任何人都可以帮我弄清楚它为什么不起作用?
特别是我的错误,当我点击添加按钮时,没有任何内容添加到tableview。
//UITABLEVIEW DELEGATE METHODS
#pragma mark Tableview methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == workaddedTable)
{
return [tableviewArray count];
}
else
{
//INSERT CODE HERE FOR SECOND TABLEVIEW AND ERASE THE FOLLOWING LINE
return 2;
}
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if(tableView.tag == 0)
{
static NSString *CellIdentifier = @"workCell";
WorkPerformedCell *cell = (WorkPerformedCell *)[workaddedTable dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [workaddedTable dequeueReusableCellWithIdentifier:CellIdentifier];
workPerformedObject *tempOrder = [tableviewArray objectAtIndex:indexPath.row];
cell.inputSystem.text = tempOrder.systemAdded;
cell.inputsubsystem.text = tempOrder.subsystemAdded;
cell.inputProcedure.text = tempOrder.procedureAdded;
return cell;
}
else
{
//DELETE THE FOLLOWING THREE LINES, DEFINE CELL REUSE IDENTIFIER IN STORYBOARD, CREATE A CUSTOM CELL CLASS AND DESIGN IT IN STORYBOARD, ADD LABELS IN CUSTOM CELL IN STORYBOARD BUT DEFINE THEM IN YOUR CELL CLASS, CREATE AN NSMUTABLEARRAY AND A CUSTOM OBJECT CLASS TO HOLD SO YOU CAN REFRESH DATA AND UPDATE LABELS
static NSString *CellIdentifier = @"workCell";
WorkPerformedCell *cell = (WorkPerformedCell *)[workaddedTable dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [workaddedTable dequeueReusableCellWithIdentifier:CellIdentifier];
return cell;
}
}
//PICKERVIEW DELEGATE METHODS
#pragma mark Pickerview methods
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
//One column
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//set number of rows
if (pickerView == _systemPicker)
{
return systemArray.count;
}
else if (pickerView == _subsystemPicker)
{
return subsystemArray.count;
}
else
{
return procedureArray.count;
}
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
//set item per row
//set number of rows
if (pickerView == _systemPicker)
{
return [systemArray objectAtIndex:row];
}
else if (pickerView == _subsystemPicker)
{
return [subsystemArray objectAtIndex:row];
}
else
{
return [procedureArray objectAtIndex:row];
}
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if(pickerView == _systemPicker)
{
systemAdded = [systemArray objectAtIndex:row];
}
else if(pickerView == _subsystemPicker)
{
subsystemAdded = [subsystemArray objectAtIndex:row];
}
else
{
procedureAdded = [procedureArray objectAtIndex:row];
}
}
//BUTTON METHODS FOR BLOCK 3
- (IBAction)buttonPressed:(id)sender
{
_tempworkPerformedObject.systemAdded = [self pickerView:self.systemPicker titleForRow:1 forComponent:0];;
_tempworkPerformedObject.subsystemAdded = [self pickerView:self.subsystemPicker titleForRow:1 forComponent:0];;
_tempworkPerformedObject.procedureAdded = [self pickerView:self.procedurePicker titleForRow:1 forComponent:0];;
[tableviewArray addObject:_tempworkPerformedObject];
[self refreshData];
}
-(void) refreshData
{
[workaddedTable reloadData];
}
答案 0 :(得分:0)
除_tempworkPerformedObject
中的buttonPressed
外,所有内容都按顺序查看。
此对象在何处实例化?你能提供那些代码吗?
您似乎正在重复使用同一个对象并更改其属性以添加到数组中。如果是这种情况,这将最终改变数组中每个元素的那些属性(因为它们都指向相同的对象)
为了使其正常工作,您需要在buttonPressed:
中创建一个新对象并将其添加到数组中。