입력이 "NULL"이 아닌 한 NSMutableArray에서 채워지는 UIPicker보기가 있습니다.선택에 따라 UIPickerView에서 항목을 삭제할 수 없습니다
그래서 내 선택기는 NULL을 제외한 모든 값을 표시합니다.
이제 UITextField 상자와 버튼이 있습니다. 그래서 텍스트 필드에 무엇을 입력하든 버튼을 클릭하면 NSMutableArray (UIPickerView를 채우는 데 사용 된)에있는 것과 일치하는 항목이 있으면 NULL로 설정하고 UIPicker를 새로 고침하여 변경하지 않습니다. 더 이상 표시되지 않습니다.
어떤 이유로 NSM을 사용하여 확인한 값을 NULL로 설정할 수 있지만 선택기가 업데이트를 가져 오지 않으며 NSMutable 배열도 수행하지 않습니다.
-(void) loadthepicker
{
NSMutableArray *getarray = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"FilerNamesArray"]];
pickerLoaderArray=[[NSMutableArray alloc] init];
for (int j=0; j<20; j++) {
if ([[getarray objectAtIndex:j] isEqualToString:@"NULL"])
{
// do nothing..don't load
}
else // add that filter to pickerLoaderArray
{
[pickerLoaderArray addObject:[getarray objectAtIndex:j]];
}
} // end of for
[pickerView reloadAllComponents];
[pickerView selectRow:0 inComponent:0 animated:NO];
}
-(NSInteger)numberOfComponentsInPickerView:(NSInteger)component
{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)picker numberOfRowsInComponent:(NSInteger)component
{
return [pickerLoaderArray count];
}
-(NSString *)pickerView:(UIPickerView *)picker titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return [pickerLoaderArray objectAtIndex:row];
}
버튼 : 난 당신이 뭘 하려는지받을 경우
- (IBAction)deleteButton:(id)sender {
NSUserDefaults *CheckFiltersUsed = [NSUserDefaults standardUserDefaults];
NSInteger myInt = [CheckFiltersUsed integerForKey:@"FiltersUsed"];
if (myInt<=20 && myInt>0) {
NSLog(@"number of filters used before deleting %ld",(long)myInt);
[CheckFiltersUsed setInteger:myInt-1 forKey:@"FiltersUsed"];
[CheckFiltersUsed synchronize];
// get names array
NSMutableArray *getarray = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"FilerNamesArray"]];
NSArray *get=getarray;
// at location where name matches with selectedfilter..put NULL
for (int j=0; j<20; j++) {
if ( [[getarray objectAtIndex:j] isEqualToString:_filterToDelete.text] && isFilterDeleted==NO)
{
NSLog(@"------currently %d is %@",j,[getarray objectAtIndex:j]);
[getarray insertObject:@"NULL" atIndex:j];
NSLog(@"------now %d is %@",j,[getarray objectAtIndex:j]);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"" message: @"Deleted" delegate: nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show];
isFilterDeleted=YES;
[[NSUserDefaults standardUserDefaults] setObject:getarray forKey:@"FilerNamesArray"];
[[NSUserDefaults standardUserDefaults]synchronize];
[self loadthepicker];
}
else
{
NSLog(@"No matching filter name");
}
} // end of for
//now save this array back.
}
else
{
NSUserDefaults *CheckFiltersUsed = [NSUserDefaults standardUserDefaults];
NSInteger myInt = [CheckFiltersUsed integerForKey:@"FiltersUsed"];
NSLog(@"Wrong number of filters!!!... %d",myInt);
}
}
전자 문자열 @ "NULL"
그래서 대신 동일합니다. – matt
열이 하나뿐이므로 그 중 하나의 구성 요소라고 생각합니다. 모든 행에 대해 무엇을 의미하는지 확신 할 수 없습니다. – rbk