2014-11-09 2 views
2

.hidden 인 UIButtons에 약간의 도움이 필요합니다. 나는이 사이트를 처음 사용하므로이 문제를 가장 잘 묘사하는 부분을 나에게 알려주십시오.UITableView를 다시로드 할 때 숨겨진 UIButton이 표시됩니다.

다음은 두 UIButtons의 그림입니다.이 UIButton 중간에 OnRoute이라는 또 다른 UIButton이 있습니다. Acknowledged 버튼이 눌려지면 상태를 보내고 OnRoute UIButton을 나타냅니다. 이제 Acknowledged 버튼이 숨겨져 있습니다. Runstheet 버튼 아래의 화면에서 OnRoute 버튼 만 누르면 상태를 보내고 자체를 숨 깁니다.

일단이 버튼을 누르면 UITableView로 보내지 만이 시점에서 모두 정상이지만 메뉴 화면으로 돌아 가면 버튼이 눌러지지 않은 것처럼 다시 나타납니다. 그리고 상태를 계속해서 반복해서 보낼 수 있습니다.

버튼을 누르면 작업 상태가 서버의 소프트웨어에 표시됩니다. 일단 이것들이 보내졌고 UIButtons가 그 직업 번호를 숨기면, 저는 일자리가 손에 닿지 않을 때까지 그것들을 숨기고 싶습니다.

이것은 복잡한 문제이지만 누군가이 아이디어가 있다면 정말 감사 할 것입니다. 이있는 viewDidLoad에 //

self.onroute.hidden = YES; 
NSNumber *num = [NSNumber numberWithInt:10.00]; 

self.acknow.hidden = YES; 

if((self.consignment.cur_status_no < num) || [self.consignment.newjob isEqual:@(YES)]){ 

    self.acknow.hidden = NO; 

//이 IBAction를에

- (IBAction)acknowledgebtn:(id)sender { 


    if (self.onroute.hidden == YES){ 
     self.acknow.hidden = NO; 
     self.onroute.hidden = NO; 
     self.acknow.hidden = YES; 

//이며,이 다른 IBAction를

if (self.acknow.hidden == YES){ 
    self.onroute.hidden = YES; 
입니다

나는이 사이트를 처음 보았으므로 미안하지만 UIButton 사진을 게시 할 수는 없다.

+0

메뉴 화면으로 돌아 왔을 때 버튼은 이탈했을 때와 동일한 숨겨진 상태를 유지해야합니다. 그렇지 않은 경우 메뉴 컨트롤러의 새 인스턴스를 다시 만들지 않아야합니다 다 끝났어. 너 어떻게 돌아 가니? – rdelmar

답변

1

내 제안은 버튼 숨겨진 속성에 의존하는 대신 일부 부울을 사용하는 것입니다. 그런 다음 새로운보기로 전환 할 때 부울을 저장하십시오. 그런 다음 주 메뉴로 돌아와서 부울을 확인하고 무엇을 숨겨야하며 무엇이 없어야하는지 확인하십시오.

또한 변수 이름을 지정할 때 다른 사람이 내 코드를보고있는 것처럼 가장합니다. 그래서 단추 이름으로 온전한 대신에, 나는 그것을 onroute하게 만들 것이다. 그러나. 이렇게하면 코드를 다시 살펴볼 때 각 변수가 이름을보고 정확히 무엇인지 쉽게 알 수 있습니다.

코드에 관해서는 내가 어떻게 의견을 제시하고 있는지 모르겠으므로 완전한 대답을 줄 수는 없습니다. 그러나 이것이 도움이 될 것이라고 생각합니다. 당신의

@property (nonatomic) BOOL onrouteBool; 
@property (nonatomic) BOOL acknowBool; 
//whatever other bools you need instead of using button.hidden == YES/NO 

당신의 .H에서

.m

다시 주 메뉴로 전환 버튼이 있어야합니다 있는지 확인하기 위해 bools을 검사 할 때

-(void)saveTheBools { 

    //save the bools however you want before you transition the view 
    //one way is nsuserdefaults 

    [[NSUserDefaults standardUserDefaults]setBool:onrouteBool forKey:@"onrouteBool"]; 
    [[NSUserDefaults standardUserDefaults]setBool:acknowBool forKey:@"acknowBool"]; 

    [[NSUserDefaults standardUserDefaults]synchronize]; 
    //how you save them 

} 

다음 bools을 저장하려면 다음 뷰 호출에이 방법을 전환하기 전에 지금 그래서

@synthesize onrouteBool, acknowBool; 

-(void)viewDidLoad { 
    onrouteBut.hidden = YES; 
    onrouteBool = YES; 

    NSNumber *num = [NSNumber numberWithInt:10.00]; 

    acknowBut.hidden = YES; 
    acknowBool = YES; 

    if((self.consignment.cur_status_no < num) || [self.consignment.newjob isEqual:@(YES)]) { 

     acknowBut.hidden = NO; 
     acknowBool = NO; 
    } 

} 

-(IBAction)acknowledgeBtn:(id)sender { 

    if (onrouteBool == YES) { 

     acknowBut.hidden = NO; 
     onrouteBut.hidden = NO; 

     acknowBool = NO; 
     onrouteBool = NO; 

     //this part doesn't make sense you set the button to visible and then hidden right after 
     acknowBut.hidden = YES; 
     acknowBool = YES; 
    } 

} 

-(IBAction)onrouteBtn:(id)sender { 

    if (acknowBool == YES) { 

    onrouteBut.hidden = YES; 
    onrouteBool = YES; 

    } 

} 

숨김

-(void)checkTheBools { 

    onrouteBool = [[NSUserDefaults standardUserDefaults] boolForKey:@"onrouteBool"]; 
    acknowBool = [[NSUserDefaults standardUserDefaults] boolForKey:@"acknowBool"]; 

    if (onrouteBool == YES) { 
     onrouteBut.hidden = YES; 
    } 
    else { 
     onrouteBut.hidden = NO; 
    } 

    if (acknowBool == YES) { 
     acknowBut.hidden = YES; 
    } 
    else { 
     acknowBut.hidden = NO; 
    } 

    //whatever else you need to hidden or make visible 
} 

이것은 무엇을 해야할지에 대한 아이디어입니다. 작동시키기 위해 필요한 것을 사용하십시오. 이것은 내가 어떻게 할 것인가입니다, 이것이 최선의 방법인지는 모르지만 그것은 출발점입니다. 전환하는 방식, 초기화하는 항목, 유지하는 방식 등을 알지 못해서 모든 코드를 보지 않고도 구체적인 답변을 제공 할 수는 없습니다.

희망이 있으면 도움이 될 것입니다. 내 잘못이야. 계속 노력하면 결국 당신을 위해 일하는 것을 찾을 수있을 것입니다.

편집 :

당신은 내가 볼 수있는 코드를 가지고 있지 않기 때문에 정말 도움이되지 수가있는 상태 문제에 관해서는

. 아마도 변수를 저장하는 것과 관련이 있으므로 클래스를 통해 변수에 액세스 할 수 있습니다. 그래서 부울을 저장하는 방법을 보여 주었고 상태를 전송했는지 확인하기 위해 비슷한 것을해야 할 것입니다.

nsuserdefaults를 사용하는 것이 가장 쉬운 방법이기 때문에 제안했지만, 모든 변수를 저장하는 데 의존하지 않는 것이 가장 좋습니다. 또한 싱글 톤, 코어 데이터 또는 클래스를 통해 필요한 변수를 저장할 수있는 모든 것을 조사 할 수 있습니다. 당신이하려는 일에 가장 잘 맞는 방법을 찾아야합니다.

당신이 배울 수있는 유일한 방법은 때로는 고민하고, 약간의 연구를하고, 해결책을 찾을 때까지 다른 것을 시도하는 것입니다. 또한 애플이 개발자로서 제공하는 리소스를 활용하십시오. 나는 당신이 이것을 이해할 수있을 것이라고 생각합니다. 행운을 빌어 요

1

이 문제가있는 사람을 업데이트하고 싶습니다. doubleValue를 사용하여이 문제를 해결할 수있었습니다.

onroute.hidden = YES; 
onrouteBool = YES; 


NSNumber *num1 = [NSNumber numberWithDouble:10.00]; 

if(([self.consignment.cur_status_no doubleValue] < [num1 doubleValue] )) { 

    if([self.consignment.newjob isEqual:@(NO)]) { 

     onroute.hidden = NO; 
     onrouteBool = NO; 
    } 
} 
acknow.hidden = YES; 
acknowBool = YES; 

if([self.consignment.newjob isEqual:@(YES)]) { 

    acknow.hidden = NO; 
    acknowBool = NO; 
} 

귀하의 모든 도움에 다시 한번 감사드립니다.

관련 문제