2014-06-21 3 views
1

보기와 다음 코드 사이에 segue가 연결된 스토리 보드가 있습니다. 몇 가지 이유로 segue가 호출되지 않고 올바르게 이름이 지정되어 있다는 점에 긍정적입니다. 그것은 IBAction 메서드 또는 무엇 때문에 dosen't 작동하는지 궁금합니다. 나는 아주 혼란스러워서 당신이 어떤 아이디어라도 가지고 있다면 알려주지. 감사.performseguewithidentifier가 IBAction 메소드에서 작동하지 않습니다.

-(IBAction)didPressSubmit:(id)sender{ 

    NSString *idOfObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"idOfObject"]; 


    PFQuery *query = [PFQuery queryWithClassName:@"RequestsClass"]; 


    [query getObjectInBackgroundWithId:idOfObject block:^(PFObject *myObj, NSError *error) { 

     myObj[@"hasResponded"] = @"has"; 
     myObj[@"answer"] = textField.text; 
     [myObj saveInBackground]; 



    }]; 

     [self performSegueWithIdentifier:@"userDidRespond" sender:self]; 
} 

또한 아무런 오류가 발생하지 않습니다. NSLog를 "segue를 수행하려고합니다"라고 말하는 라인 바로 위에 추가하고 잘 인쇄했습니다. 그래서 나는 잘 모르겠다.

는 또한

Warning: A long-running Parse operation is being executed on the main thread. 
Break on warnParseOperationOnMainThread() to debug 

그래서 어쩌면 내가 그런 메인 스레드 또는 뭔가를 양단 큐해야하는이 경고는 무엇입니까? 감사합니다

+0

segues 이름이 userDidRespond인지 확인하십시오. 이 메소드가 호출되고 있습니까? 점검 할 중단 점을 설정하십시오. – mihai

+0

prepareForSegue 메소드를 게시 할 수 있습니까? 문제가있는 것 같습니다. –

+0

스토리 보드에서 섹거가 어떻게 연결되어 있습니까? – rdelmar

답변

0

이동이 선 : 블록 내부

[self performSegueWithIdentifier:@"userDidRespond" sender:self]; 

. 이처럼

:

-(IBAction)didPressSubmit:(id)sender{ 

NSString *idOfObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"idOfObject"]; 


PFQuery *query = [PFQuery queryWithClassName:@"RequestsClass"]; 


[query getObjectInBackgroundWithId:idOfObject block:^(PFObject *myObj, NSError *error) { 

    myObj[@"hasResponded"] = @"has"; 
    myObj[@"answer"] = textField.text; 
    [myObj saveInBackground]; 

    [self performSegueWithIdentifier:@"userDidRespond" sender:self]; 

}]; 

} 

나는이 트릭을 할 것입니다 바랍니다.

+0

나는 그것을 시도했지만 여전히 작동하지 않았다. 오류 또는 아무것도. 단조 로움을 수행하지 않았습니다. 유용 할 수도있는 경고 중 하나를 사용하여 답변을 업데이트했습니다. 감사! –

0

performSegueWithIdentifier 메서드를 사용하지 않고 코드를 따라 다른보기 컨트롤러에서 다른보기 컨트롤러로 이동할 수도 있습니다.

UIStoryboard *story = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
viewController *viewObj = [story instantiateViewControllerWithIdentifier:@"viewController"]; 

[self.navigationController pushViewController:viewObj animated:YES]; 

이렇게하려면 storyboardID를 viewcontroller에 "viewController"로 스토리 보드에 제공해야합니다. 이 방법으로 다음보기를위한 개체를 설정할 수도 있습니다.

+0

이것은 의미가 있지만 사용했을 때 아무 것도하지 않았습니다. 유용 할 수도있는 경고 중 하나를 포함하여 답변을 업데이트했습니다. 감사! –

+0

예, 코드에서 한 블록이 실행 중입니다. 그래서 스레드에서 실행 중입니다. 그래서 하나의 메소드를 만들고이 메소드에 푸시 뷰 컨트롤러의이 코드를 넣으십시오. 그 다음에 ibaction을 호출하십시오. 또는 일정 시간 간격 후에 전화하십시오. – Max

0

파문 경고는 관련이 없으므로 다른 질문을해야합니다. 주 스레드에서 Parse (아마도 로그인이?)에 연결하려고한다는 것을 알려줍니다. 완료 블록이있는 다른 스레드에서 비동기 적으로이 작업을 수행하려고합니다. 이 같은

뭔가 : (SWIFT의)는

PFUser.logInWithUsernameInBackground(userName.text, password: passwordField.text, block: { 
     (user,error) in 
     completion(error == nil) 
    }) 

구문 분석뿐만 아니라 목표 - C에서 많은 예제가 있습니다.

관련 문제