我的问题只在于我的选择器“proPicker”。奇怪的是,对象仍然在数组中,因为即使选择器显示为空白,我的文本字段中的文本也会发生变化......
我相信我已经按照所有步骤填充选择器,并且 10 次选择器中有 9 次显示正确的信息,但有时它只是显示为空白。
这是我的代码:
。H:
//
// EditDebateViewController.h
//
//
// Created by Jacob Klapper on 10/17/13.
//
//
#import <UIKit/UIKit.h>
#import <Parse/Parse.h>
@interface EditDebateViewController : UITableViewController <UITextFieldDelegate, UIPickerViewDelegate,UIActionSheetDelegate>
@property UIDatePicker *pickerView;
@property (weak, nonatomic) IBOutlet UITextField *topic;
@property (weak, nonatomic) IBOutlet UITextField *pro;
@property (weak, nonatomic) IBOutlet UITextField *con;
@property (weak, nonatomic) IBOutlet UITextField *pVotes;
@property (weak, nonatomic) IBOutlet UITextField *cVotes;
@property (weak, nonatomic) IBOutlet UITextField *abs;
@property (weak, nonatomic) IBOutlet UITextField *date;
@property NSMutableArray *pChoices;
@property NSMutableArray *pStrings;
@property NSMutableArray *cChoices;
@property NSMutableArray *cStrings;
@property NSMutableArray *proTest;
@property UIPickerView *proPicker;
@property PFObject *obj;
@end
米:
//
// EditDebateViewController.m
//
//
// Created by Jacob Klapper on 10/17/13.
//
//
#import "EditDebateViewController.h"
@interface EditDebateViewController ()
@end
@implementation EditDebateViewController
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
//self.date = [[UIDatePicker alloc]init];
self.date.delegate = self;
self.pro.delegate = self;
self.con.delegate = self;
self.pVotes.delegate = self;
self.cVotes.delegate = self;
self.abs.delegate = self;
self.topic.delegate = self;
self.pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 322, 0, 0)];
self.pickerView.datePickerMode = UIDatePickerModeDate;
self.pickerView.hidden = true;
self.pickerView.date = [NSDate date];
[self.pickerView addTarget:self
action:@selector(updateLabel:)
forControlEvents:UIControlEventValueChanged];
//[self.view addSubview:pickerToolbar];
[self.tableView addSubview:self.pickerView];
//self.pickerView.del
self.date.inputView = self.pickerView;
NSDateFormatter *df = [[NSDateFormatter alloc] init];
//[df setLocale:enUSPOSIXLocale];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setDateFormat:@"MMM dd, yyyy "];
self.proPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 322, 0, 0)];
self.proPicker.hidden = true;
self.proPicker.delegate = self;
[self.tableView addSubview:self.proPicker];
self.pro.inputView = self.proPicker;
self.pStrings = [[NSMutableArray alloc]init];
self.cStrings = [[NSMutableArray alloc]init];
self.pChoices = [[NSMutableArray alloc]initWithArray:[self.obj objectForKey:@"PR"]];
self.cChoices = [[NSMutableArray alloc]init];
self.proTest = [[NSMutableArray alloc]init];
//self.pChoices = [self.obj objectForKey:@"PR"];
//self.cChoices = [self.obj objectForKey:@"CR"];
NSLog(@"Choices Now: %@", self.pChoices);
NSLog(@"Choices Count: %lu", (unsigned long)[self.pChoices count]);
for (PFUser *us in self.pChoices) {
//NSLog(@"Hi");
//PFUser *user = [self.pChoices objectAtIndex:i];
[us fetchIfNeededInBackgroundWithBlock:^(PFObject *object, NSError *error) {
//[self.pChoices addObject:object];
//NSString *name = [NSString stringWithFormat:@"%@ %@", [object objectForKey:@"firstName"], [object objectForKey:@"lastName"]];
//NSLog(name);
//[self.proTest addObject:object];
//NSLog(@"The value before pStrings is: %@", name);
//[self.pStrings addObject:name];
//NSLog(@"This is spot: %@", [self.pStrings objectAtIndex:i]);
[self.proTest addObject:object];
NSString *name = [NSString stringWithFormat:@"%@ %@", [object objectForKey:@"firstName"], [object objectForKey:@"lastName"]];
[self.pStrings addObject:name];
NSLog(@"Pro Test: %@", self.proTest);
NSLog(@"Pro Strings: %@", self.pStrings);
NSLog(@"User: %@", us);
NSLog(@"Object: %@", object);
}];
}
NSLog(@"Strings: %@", self.pStrings);
NSLog(@"Pro Test: %lu", (unsigned long)[self.proTest count]);
//NSLog(@"%@", self.pStrings);
self.topic.text = [self.obj objectForKey:@"Topic"];
self.date.text = [df stringFromDate:[self.obj objectForKey:@"Date"]];
NSLog(@"Hi Test");
if([[NSString stringWithFormat:@"%@", [self.obj objectForKey:@"proVotes"] ] isEqualToString:@"0"])
{
NSLog(@"ITS NULL");
self.pVotes.text = @"";
}
//self.pVotes.text = [NSString stringWithFormat:@"%@", [self.obj objectForKey:@"proVotes"] ];
else
{
self.pVotes.text = [NSString stringWithFormat:@"%@", [self.obj objectForKey:@"proVotes"] ];
}
if([[NSString stringWithFormat:@"%@", [self.obj objectForKey:@"conVotes"] ] isEqualToString:@"0"])
{
self.cVotes.text = @"";
}
else
{
self.cVotes.text = [NSString stringWithFormat:@"%@", [self.obj objectForKey:@"conVotes"] ];
}
if([[NSString stringWithFormat:@"%@", [self.obj objectForKey:@"Abstentions"] ] isEqualToString:@"0"])
{
self.abs.text = @"";
}
else
{
self.abs.text = [NSString stringWithFormat:@"%@", [self.obj objectForKey:@"Abstentions"]];
}
/*
NSLog(@"Here");
NSLog(@"%@", proU);
self.pro.text = [NSString stringWithFormat:@"%@ %@", [proU objectForKey:@"firstName"], [proU objectForKey:@"lastName"]];
PFUser *conU = [self.obj objectForKey:@"Con"];
//self.con.text = [NSString stringWithFormat:@"%@ %@", [conU objectForKey:@"firstName"], [conU objectForKey:@"lastName"]];
*/
PFUser *proU = [self.obj objectForKey:@"Pro"];
[proU fetchIfNeededInBackgroundWithBlock:^(PFObject *object, NSError *error) {
self.pro.text = [NSString stringWithFormat:@"%@ %@", [object objectForKey:@"firstName"], [object objectForKey:@"lastName"]];
}];
PFUser *conU = [self.obj objectForKey:@"Con"];
[conU fetchIfNeededInBackgroundWithBlock:^(PFObject *object, NSError *error) {
self.con.text = [NSString stringWithFormat:@"%@ %@", [object objectForKey:@"firstName"], [object objectForKey:@"lastName"]];
}];
[self.pickerView setDate:[self.obj objectForKey:@"Date"]];
[self.proPicker reloadAllComponents];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)viewDidAppear:(BOOL)animated
{
[self.proPicker reloadAllComponents];
}
/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
*/
/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
*/
/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
}
*/
/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the item to be re-orderable.
return YES;
}
*/
/*
#pragma mark - Navigation
// In a story board-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
- (IBAction)backcustom:(UIBarButtonItem *)sender {
[self.navigationController popViewControllerAnimated:YES];
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
//[aTextField resignFirstResponder];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
//[df setLocale:enUSPOSIXLocale];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setDateFormat:@"MMM dd, yyyy "];
if(textField == self.topic)
{
NSLog(@"Topic");
}
if(textField == self.date)
{
self.pickerView.hidden = false;
self.date.text = [df stringFromDate:self.pickerView.date];
}
if(textField == self.pro)
{
self.proPicker.hidden = false;
//self.pro.text =
NSInteger rowSelectionKg = [self.proPicker selectedRowInComponent:0]; //get currrent row of picker for first column
NSString *tempKg = [self.pStrings objectAtIndex:rowSelectionKg]; //use row as index to get value in corresponding array of choices in picker
self.pro.text = tempKg;
}
//pickerViewPopup = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
return YES;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (pickerView == self.proPicker) {
self.pro.text = [self.pStrings objectAtIndex:row];
}
else
{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
//[df setLocale:enUSPOSIXLocale];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setDateFormat:@"MMM dd, yyyy "];
self.date.text = [df stringFromDate:self.pickerView.date];
//NSString *strFirstPickerView = [_ty objectAtIndex:row];
//_providerType.text = strFirstPickerView;
}
}
- (void)updateLabel:(id)sender {
NSDateFormatter *df = [[NSDateFormatter alloc] init];
//[df setLocale:enUSPOSIXLocale];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setDateFormat:@"MMM dd, yyyy "];
self.date.text = [df stringFromDate:self.pickerView.date];
}
- (IBAction)saveChanges:(UIBarButtonItem *)sender {
[self.obj setObject:self.topic.text forKey:@"Topic"];
[self.obj setObject:[NSNumber numberWithInt:self.pVotes.text.intValue] forKey:@"proVotes"];
[self.obj setObject:[NSNumber numberWithInt:self.cVotes.text.intValue] forKey:@"conVotes"];
[self.obj setObject:[NSNumber numberWithInt:self.abs.text.intValue] forKey:@"Abstentions"];
[self.obj setObject:self.pickerView.date forKey:@"Date"];
NSLog(@"Saving...");
[self.obj saveInBackground];
[self performSegueWithIdentifier:@"afterSave" sender:self];
//[self.navigationController popViewControllerAnimated:YES];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Section: %ld", (long)[indexPath section]);
NSLog(@"Row: %ld", (long)[indexPath row]);
if([indexPath section] == 1 && [indexPath row] == 0)
{
NSLog(@"Right Cell");
UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete Debate" otherButtonTitles:nil];
popupQuery.tag = 1;
[popupQuery showInView:self.view];
}
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if(actionSheet.tag == 1)
{
if(buttonIndex == 0)
{
[self.obj deleteInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
[self performSegueWithIdentifier:@"afterSave" sender:self];
//[self loadObjects];
}];
}
}
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
if(pickerView == self.proPicker)
{
NSLog(@"First Log");
NSLog(@"In numComponents: %@",self.pStrings);
return 1;
}
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if(pickerView == self.proPicker)
{
NSLog(@"Right Picker");
NSLog(@"Count in numRows: %lu", (unsigned long)[self.pStrings count]);
return [self.pStrings count];
}
//return [_ty count];
return [self.pStrings count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component
{
if(pickerView == self.proPicker)
{
NSLog(@"Picked goooood");
return [self.pStrings objectAtIndex:row];
}
return [self.pStrings objectAtIndex:row];
}
@end