programing

UI 내비게이션 컨트롤러에서 "뒤로" 버튼을 숨기는 방법은 무엇입니까?

javaba 2023. 5. 29. 21:38
반응형

UI 내비게이션 컨트롤러에서 "뒤로" 버튼을 숨기는 방법은 무엇입니까?

UI 내비게이션 컨트롤러에서 '뒤로' 버튼을 숨기는 방법을 알고 있습니까?또한, 어떻게 그것을 다시 보여주는지, 하지만 그것은 숨기는 것과 매우 비슷하다고 생각합니다.

메일을 보다가 '편집'을 누르면 아이폰에서 메일 애플리케이션이 실행되는 것과 같습니다.

방금 답을 알아냈습니다. 컨트롤러에서 다음과 같이 사용하십시오.

[self.navigationItem setHidesBackButton:YES animated:YES];

복원 방법:

[self.navigationItem setHidesBackButton:NO animated:YES];

--

[업데이트]

Swift 3.0:

self.navigationItem.setHidesBackButton(true, animated:true)

이 코드 추가

[self.navigationItem setHidesBackButton:YES];

iOS 7 이상에서는 뒤로 버튼을 제거하는 것 외에도 사용자가 왼쪽에서 오른쪽으로 스와이프 제스처를 사용하여 이전 화면으로 '팝'할 수 있습니다.

이를 비활성화하려면(해당하는 경우) 다음을 구현합니다(예: viewDidLoad).

 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
     self.navigationController.interactivePopGestureRecognizer.enabled = NO;

기존 답변을 명확히 하기 위해:hidesBackButton재산이 정답이지만, 많은 답변에서 무엇인지 명확하지 않습니다.self을 참조합니다.기본적으로 설정해야 합니다.self.navigationItem.hidesBackButton = YES위로 밀리기 직전(또는 방금 밀리기 직전)인 뷰 컨트롤러에서UINavigationController.

다른 말로 하면, 내가 가지고 있습니다.UINavigationController이름 지어진myNavController새 보기를 추가하고 싶을 때는 뒤로 단추가 더 이상 표시되지 않습니다.저는 다음과 같은 일을 할 수 있습니다.

UIViewController *newVC = [[UIViewController alloc] init];
//presumably would do some stuff here to set up the new view controller
newVC.navigationItem.hidesBackButton = YES;
[myNavController pushViewController:newVC animated:YES];

코드가 완료되면 다음에 의해 제어되는 보기newVC이제 표시되고 뒤로 버튼이 표시되지 않아야 합니다.

뒤로 버튼을 조건부로 숨기거나 표시하려면 다음 코드를 사용할 수 있습니다.

-(void)viewDidAppear:(BOOL)animated
{
    if ([tempAry count]==0)
    {
        [self.navigationItem setHidesBackButton:YES animated:YES];
    }
    else
    {
        [self.navigationItem setHidesBackButton:NO animated:YES];
    }
    [super viewDidAppear:animated];
} 

참고: 경우에 따라 viewDidAppear 메서드 대신 viewDidAppear 메서드에 넣어야 합니다. 다음과 같은 경우는 다음 클래스의 배열을 이전 클래스로 업데이트한 다음 위와 같이 다음 클래스로 조건을 확인할 때 나타납니다.

Swift iOS (나는 다음을 사용해 왔습니다)

// hide back button
        self.navigationItem.setHidesBackButton(true, animated: false)

// pgrm mark ----- ------

    // hide the back button for this view controller

    override func setEditing(editing: Bool, animated: Bool) {
        super.setEditing(editing, animated: animated)

        self.navigationItem.setHidesBackButton(editing, animated: animated)

    }// end setEditing

세스 사이드 백 버튼은 어떤 이유로 저에게 작동하지 않았습니다.

저는 이 방법을 사용했습니다 ->

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc]initWithFrame:CGRectMake(0, 0, 20, 30)]] ;

간단한 문제는 항상 Apple 설명서를 사용하십시오. 더 간단하고 가볍습니다. :)

Swift 3.0의 구문은 다음과 같습니다.

self.navigationItem.setHidesBackButton(true, animated:true)

언급

https://developer.apple.com/reference/uikit/uinavigationitem #//apple_ref/occ/instm/UIavigationItem/setHidesBackButton: 애니메이션:

저의 경우 현재 답변과 관련하여 몇 가지 문제가 있었습니다.

  • inside viewDidLoad/viewWillOnly Back 아이콘이 숨겨져 있고 "Back" 문자열이 비활성화되었지만 여전히 표시됩니다.
  • 내부 보기뒤로 단추가 사라진 것 같습니다...하지만 나는 사용자가 그것을 보는 것을 전혀 원하지 않았습니다.

결국 저에게 효과적인 솔루션은 다음과 같습니다.

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];

    if (self) {
        [self.navigationItem setHidesBackButton:YES animated:NO];
    }

    return self;
}

조란 시믹이 제안한 해결책은 왠지 저에게 효과가 없었습니다.

그러나 이 코드는 작동했습니다.

MyController* controller   =   [[MyController alloc]  init];
NSArray* array             =   [[[NSArray alloc] initWithObjects:controller, nil] autorelease];

[self.navigationController setViewControllers:array animated:NO];

[controller release];

분명히 당신은 NSA 레이를 당신의 취향에 맞게 조작해야 합니다.누군가에게 도움이 되길 바랍니다 :)

UIViewController 하위 클래스에는 다음과 같은 방법이 있습니다.

-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated: animated];

    // hide back button in edit mode
    [self.navigationItem setHidesBackButton:editing animated:YES];
}

이렇게 하면 뒤로 단추가 숨겨지고 Swift의 추가 단추로 대체됩니다.

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)

    // This hides the back button while in editing mode, which makes room for an add item button
    self.navigationItem.setHidesBackButton(editing, animated: animated)

    if editing {
        // This adds the add item button
        let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
        // Use the animated setter for the left button so that add button fades in while the back button fades out
        self.navigationItem.setLeftBarButton(addButton, animated: animated)
        self.enableBackGesture(enabled: false)
    } else {
        // This removes the add item button
        self.navigationItem.setLeftBarButton(nil, animated: animated)
        self.enableBackGesture(enabled: true)
    }
}

func enableBackGesture(enabled: Bool) {
    // In addition to removing the back button and adding the add item button while in edit mode, the user can still exit to the previous screen with a left-to-right swipe gesture in iOS 7 and later. This code disables this action while in edit mode.
    if let navigationController = self.navigationController {
        if let interactivePopGestureRecognizer = navigationController.interactivePopGestureRecognizer {
            interactivePopGestureRecognizer.isEnabled = enabled
        }
    }
}

스위프트 3.

일반적으로 이 페이지에서 이미 여러 번 설명한 대로 Apple의 View 컨트롤러별 API를 사용해야 하지만, 때로는 뒤로 단추를 즉시 제어해야 합니다.

다음 코드는 뒤로 단추를 숨기고 숨겨진 단추 영역에서 탭 충돌 감지가 발생하지 않도록 합니다.

let emptyView = UIView(frame: .zero)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: emptyView)

뒤로 단추를 숨깁니다.

let backBtn = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.plain, target: navigationController, action: nil)


navigationItem.leftBarButtonItem = backBtn

언급URL : https://stackoverflow.com/questions/1453519/how-to-hide-the-back-button-in-uinavigationcontroller

반응형