핵심 데이터가있는 테이블보기의 이상한 동작

음 바스코

단계별로 첫 번째 iOS 앱 만들기를 진행하고 있습니다. 이제 나는 해결할 수없는 테이블 뷰 컨트롤러에서 이상한 동작을 경험하고 있으며 몇 시간 동안 그 이유를 찾고 있습니다. 이것은 시나리오입니다.

  1. 핵심 데이터를 사용하는 간단한 iOS 앱.
  2. 하나의 핵심 데이터 항목 개체를 표시하는 테이블보기 컨트롤러입니다.
  3. 하나의 뷰 컨트롤러 (AddViewController)는 여러 속성 값을 입력합니다.
  4. 하나의 뷰 컨트롤러 (EditViewController)는 테이블 뷰 컨트롤러에서 행을 선택한 후 개체 값을 업데이트합니다.

질문을 충분히 명확히하기 위해 모든 문자열 속성 인 'thingName', 'urgent'및 'color'속성 중 세 가지만 고려할 것입니다. 모든 행에는 문자열 (thingName), 색상 속성의 아이콘으로 이미지, 긴급 속성의 아이콘으로 다른 이미지가 표시됩니다. 앱 프로세스는 빈 테이블로 시작됩니다. 추가 버튼을 누른 후 앱은 텍스트 필드 (thingName)가있는보기 인 AddViewController보기, 개체를 긴급 / 긴급하지 않음으로 표시하는 스위치 및 컬러 그룹을 표시합니다. 단추를 사용하여 개체에 색상 종속성을 할당합니다. thingName을 소개하고 개체를 긴급하거나 긴급하지 않은 것으로 선택하고 색상 버튼 중 하나를 선택한 후 사용자는 저장 버튼을 탭한 다음 뒤로 버튼을 눌러 테이블보기 컨트롤러로 돌아갑니다. 모든 것이 예상대로 작동합니다. thingName 텍스트를 cell.text로 포함하는 새 행이 표시되고, 개체가 긴급으로 표시되었음을 나타내는 아이콘 및 사용자가 선택한 색상의 색연필이 나타납니다. 그런 다음 사용자가 thingName 텍스트 / 긴급 또는 긴급하지 않음 / 색상을 변경하려는 경우 개체 행을 선택하면 앱에 editViewController가 표시됩니다. 사용자가 텍스트를 변경하고 저장 한 후 업데이트 된 텍스트도 테이블보기에 표시되며 이는 앱이 변경 사항을 저장했음을 의미합니다. 사용자가 저장 후 테이블보기로 돌아간 후 긴급 상태를 긴급하지 않음에서 긴급으로 변경하면 긴급 아이콘이 예상대로 표시되지만 긴급에서 긴급하지 않음으로 변경 한 후 저장하고 테이블보기로 돌아 가면 나타나지 않아야하는 긴급 아이콘이 나타납니다. 문제를 확인하기 위해 editviewcontroller에 텍스트 필드 (urgentTextField)를 포함하여 긴급 속성의 내용을 표시했으며 스위치 상태에서 응답으로 잘 변경됩니다. 즉, 사용자가 스위치를 긴급 없음으로 설정하면 urgentTextField에 'Not urgent'가 표시되고, 사용자가 스위치를 긴급으로 설정하면 urgentTextField에 'Urgent'가 표시됩니다. 샘플 케이스 :

thingName = @"test";
urgentTextField.text=@"Not urgent";

이 경우 행에 예상 텍스트 'test'가 표시됩니다. 하지만 아이콘이 예상대로 응답하지 않으면 긴급 아이콘이 표시됩니다 .... 더 쉽게하기 위해 다음 코드가 있습니다.

RootViewController (테이블 뷰 컨트롤러) :

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
    NSManagedObject *managedObject = [fetchedResultsController objectAtIndexPath:indexPath];        

    NSString *colorValue = [[managedObject valueForKey:@"color"] description];
    NSString *isUrgent = [[managedObject valueForKey:@"urgent"]description];

   [[cell textLabel] setText:[[managedObject valueForKey:@"thingName"] description]];
  NSString *myString = [NSString stringWithFormat:@"%@",[[managedObject valueForKey:@"todoYear"] description]];

    //color pencil

    if ([hasColorValue  isEqual:@"Si color"]){
        UIButton *colorButton = [[UIButton alloc]initWithFrame:CGRectMake(308, 5, 10, 40)];
        [colorButton setImage:[UIImage imageNamed:colorValue]forState:UIControlStateNormal];
        [cell addSubview:colorButton];
    }

    //urgent
    if ([isUrgent isEqual:@"Urgent"]){
        UIButton *urgentButton = [[UIButton alloc]initWithFrame:CGRectMake(71, 27, 18, 18)];
        [urgentButton setImage:[UIImage imageNamed:@"urgent-3"]forState:UIControlStateNormal];
        [cell addSubview:urgentButton];
    }

  ../..

그리고 이것은 EditViewController의 코드입니다.

- (IBAction)SaveButtonAction:(id)sender {

    AppDelegate* appDelegate = [AppDelegate sharedAppDelegate];
    NSManagedObjectContext* context = appDelegate.managedObjectContext;

    [selectedObject setValue:ToDoTextField.text forKey:@"thingName"];
    NSString *valorUrgent = urgentTextField.text;
    [selectedObject setValue:valorUrgent forKey:@"urgent"];

    NSError *error;
    if(! [context save:&error])
    {
        NSLog(@"Whoopw,couldn't save:%@", [error localizedDescription]);
    }
}

- (void)viewDidLoad
{
    colorImagen.image = [UIImage imageNamed:nil];
    [ToDoTextField becomeFirstResponder];

    //recogiendo datos de selectedobject;
    ToDoTextField.text = [[selectedObject valueForKey:@"thingName"]description];
    colorTextField.text = [[selectedObject valueForKey:@"color"]description];
    NSString *imageName = colorTextField.text;
    colorImagen.image = [UIImage imageNamed:imageName];
    NSString *urgentValue = [[selectedObject valueForKey:@"urgent"]description];
    urgentTextField.text = urgentValue;

    if ([urgentValue isEqual:@"Urgent"]){
        [urgentSwitch setOn:YES animated:YES];
        urgentImage.image=[UIImage imageNamed:@"urgent-3"];
    }
    if ([urgentValue isEqual:@"Not urgent"]){
        [urgentSwitch setOn:NO animated:YES];
        urgentImage.image=[UIImage imageNamed:nil];
    }

    [ToDoTextField addTarget:self action:@selector(textFieldDidChange) forControlEvents:UIControlEventEditingChanged];

    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

내가 찾을 수없는 문제를 감지하기 위해 추가 정보 나 코드가 필요한지 알려주세요. 감사합니다

Jrturton

방법에 문제가있는 configureCell:것 같습니다. 셀 재사용을 고려하지 않습니다. 구성중인 셀이 이전에 사용되었을 수 있으며 이전에 긴급 상태 일 수 있습니다.

코드는 셀이 긴급한 상황 만 처리하며이 경우 하위 뷰가 추가됩니다. 이 접근 방식에는 두 가지 문제가 있습니다.

  1. 재사용 된 셀에는 매번 하위보기가 추가되므로 서로 위에 긴급한보기가 많이있을 수 있습니다. 셀은 이것을 한 번만 추가하고 속성에 유지해야합니다.
  2. 이 때 코드는 셀을 구성하는 추가해야 하지 긴급 (보통, else애프터 if). 이것은 긴급 아이콘을 숨 깁니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

iOS Swift 앱의 핵심 데이터에서 이상한 동작

분류에서Dev

핵심 데이터를 사용하는 동안 각 새 항목과 함께 테이블 상단의 테이블보기 컨트롤러에 새 항목 추가

분류에서Dev

핵심 데이터 삭제가 작동하지 않음

분류에서Dev

핵심 데이터 NSPredicate가 작동하지 않음

분류에서Dev

핵심 데이터 이상한 충돌

분류에서Dev

핵심 데이터 : 관계와 혼동

분류에서Dev

핵심 데이터 테이블보기 예외 충돌

분류에서Dev

핵심 데이터가있는 즐겨 찾기 테이블보기에 셀 추가

분류에서Dev

앱을 다시 시작한 후 핵심 데이터가 비어 있습니다.

분류에서Dev

핵심 데이터 기초

분류에서Dev

핵심 데이터에서 무작위 가져 오기

분류에서Dev

iCloud 및 핵심 데이터가 작동하지 않음-URLForUbiquityContainerIndentifier가 nil입니다.

분류에서Dev

핵심 데이터 @FetchRequest SwiftUI

분류에서Dev

핵심 데이터 및 didSelectRowAtIndexPath

분류에서Dev

핵심 데이터와 UIActivityViewController

분류에서Dev

NSUserdefault 및 핵심 데이터

분류에서Dev

핵심 데이터 대량

분류에서Dev

핵심 데이터 조건

분류에서Dev

Swift : 테이블보기에 빈 요소 추가 (핵심 데이터)

분류에서Dev

비교기가있는 핵심 데이터 정렬 설명자

분류에서Dev

NSOperation 및 동기화의 핵심 데이터 삽입 개체

분류에서Dev

Wordpress 핵심 데이터 유효성 검사 기능이 작동하지 않음

분류에서Dev

핵심 데이터-경량 마이그레이션이 작동하지 않음

분류에서Dev

핵심 데이터 : 백그라운드 NSManagedObjectContext에 대한 업데이트가 저장시 작동하지 않음

분류에서Dev

핵심 데이터 표시 : 속성에 동일한 이름이있는 경우 한 번 표시

분류에서Dev

다중 관계가있는 핵심 데이터 하위 쿼리

분류에서Dev

내가 찾고있는 핵심 데이터입니까?

분류에서Dev

핵심 데이터가있는 사용자 지정 TableViewCell

분류에서Dev

핵심 데이터 문제가있는 검색 창

Related 관련 기사

  1. 1

    iOS Swift 앱의 핵심 데이터에서 이상한 동작

  2. 2

    핵심 데이터를 사용하는 동안 각 새 항목과 함께 테이블 상단의 테이블보기 컨트롤러에 새 항목 추가

  3. 3

    핵심 데이터 삭제가 작동하지 않음

  4. 4

    핵심 데이터 NSPredicate가 작동하지 않음

  5. 5

    핵심 데이터 이상한 충돌

  6. 6

    핵심 데이터 : 관계와 혼동

  7. 7

    핵심 데이터 테이블보기 예외 충돌

  8. 8

    핵심 데이터가있는 즐겨 찾기 테이블보기에 셀 추가

  9. 9

    앱을 다시 시작한 후 핵심 데이터가 비어 있습니다.

  10. 10

    핵심 데이터 기초

  11. 11

    핵심 데이터에서 무작위 가져 오기

  12. 12

    iCloud 및 핵심 데이터가 작동하지 않음-URLForUbiquityContainerIndentifier가 nil입니다.

  13. 13

    핵심 데이터 @FetchRequest SwiftUI

  14. 14

    핵심 데이터 및 didSelectRowAtIndexPath

  15. 15

    핵심 데이터와 UIActivityViewController

  16. 16

    NSUserdefault 및 핵심 데이터

  17. 17

    핵심 데이터 대량

  18. 18

    핵심 데이터 조건

  19. 19

    Swift : 테이블보기에 빈 요소 추가 (핵심 데이터)

  20. 20

    비교기가있는 핵심 데이터 정렬 설명자

  21. 21

    NSOperation 및 동기화의 핵심 데이터 삽입 개체

  22. 22

    Wordpress 핵심 데이터 유효성 검사 기능이 작동하지 않음

  23. 23

    핵심 데이터-경량 마이그레이션이 작동하지 않음

  24. 24

    핵심 데이터 : 백그라운드 NSManagedObjectContext에 대한 업데이트가 저장시 작동하지 않음

  25. 25

    핵심 데이터 표시 : 속성에 동일한 이름이있는 경우 한 번 표시

  26. 26

    다중 관계가있는 핵심 데이터 하위 쿼리

  27. 27

    내가 찾고있는 핵심 데이터입니까?

  28. 28

    핵심 데이터가있는 사용자 지정 TableViewCell

  29. 29

    핵심 데이터 문제가있는 검색 창

뜨겁다태그

보관