xcode / storyboard : 막대 버튼을 상단의 도구 모음으로 끌 수 없습니다.


99

테이블의 상세 뷰인 뷰 컨트롤러가 있습니다. 표의 행을 클릭하면 상세보기로 이동합니다. 상세보기는 탐색 컨트롤러에 내장되어있어 탐색 표시 줄의 왼쪽 상단에 테이블로 돌아가는 버튼이 있습니다. 여태까지는 그런대로 잘됐다.

이제 상세보기를 편집 할 수 있도록 탐색 모음의 오른쪽에 편집 단추를 추가하려고합니다. 내 계획은 항목의 세부 사항을 편집 할 수있는 또 다른 뷰 컨트롤러를 모달로 추가하는 것입니다. 표준 물건.

그러나 개체 목록에서 탐색 모음으로 막대 단추 항목을 끌려고하면 시간이 걸리지 않습니다. 대신 마우스 버튼에서 손을 떼면 하단의 탭 막대 컨트롤러에 막대 버튼이 남습니다. (내 탐색 체계에는 다른 탭이 포함되어 있으며 각 탭에 대해 테이블, 상세보기 등이 있습니다.)

누구든지이 문제를 경험하고 내가 뭘 잘못하고 있는지 또는 탐색 화면의 오른쪽에 막대 버튼 항목을 추가하는 일종의 해결 방법을 제안 할 수 있습니다. 코드에 추가해야합니까?

제안 해 주셔서 감사합니다.


다음 튜토리얼 확인 brianflove.com/2012/10/01/...
카시야스

self.navigationItem.rightBarButtonItem = self.editButtonItem을 사용하여 버튼을 추가 할 수있었습니다. 스토리 보드에 새 editvc를 만들었지 만 segue를 만드는 방법을 잘 모르겠습니다. 편집 버튼이 보이지 않기 때문에 스토리 보드에서 할 수 없어서 코드에 있어야한다고 생각합니다. 준비하려고할까요?
user1904273

답변 중 하나가 당신을 도움이 있다면, 당신은 :) 그것을 받아 들여야한다

답변:


157

Xcode6을 사용하여 동일한 문제가 발생했으며 NavigationController에 포함 된 첫 번째 ViewController에 대해 UINavigationItem이 자동으로 추가되지만 후속 ViewController의 경우 다음과 같이 수동으로 추가해야합니다.

  1. 개체 라이브러리에서 탐색 항목을 찾은 다음 스토리 보드의 두 번째 ViewController로 드래그합니다.
  2. 개체 라이브러리에서 Bar Button Item을 찾은 다음 이전 단계에서 만든 탐색 항목으로 끕니다.

이제 바 버튼이 씬의 상단에 붙어 있습니다.

업데이트 솔루션은 여전히 ​​XCode 7에서 작동하지만 좀 더 설명적인 사진을 추가하고 싶었습니다. 위에서 언급 한 표준 또는 기술 이름에 익숙하지 않은 사람이있는 경우를 대비하여. 오른쪽의 빨간색 화살표는 위에서 언급 한 1 단계, 2 단계를 나타냅니다. 또한 왼쪽 빨간색 직사각형의 뷰 계층 구조에 유의하십시오. 여기에 이미지 설명 입력


2
네, 저를 위해 해냈습니다. 나는 이것이 정답이라고 생각하며 XCode는 후속 ViewController에 탐색 항목을 추가하지 않는 것 같습니다.
Jeremy Chone jul.

이것은 정확하지만 이미지의 빨간색 화살표는 개체 라이브러리의 막대 버튼 항목에서 왼쪽 빨간색 상자까지 이동해야합니다.
malhal

캔버스에 놓거나 빨간색 화살표로 표시하거나 제안한대로 문서 개요에 놓을 수 있습니다. 차이를 만들지 않습니다
Wael Showair

이 답변이 훌륭하게 작동하기 때문에이 답변을 찾았다는 점에 기쁩니다. UINavigationItem이 스토리 보드에 아직없는 이유가 당황 스럽습니다. 코드 self.navigationItem.rightBarButtonItem = ...가 작동 하기 때문에 런타임에 분명히 존재 합니다. 첫 번째 VC의 UINavigationController가 스택에 푸시 된 모든 후속 VC에 대해 인스턴스화한다고 생각합니다. 그러나 수동으로 하나를 끌어다 놓으면 서로 위에 2 개의 UINavigationItem이 생성되지 않는 이유는 무엇입니까? 수동으로 드래그 한 것과 UINavigationController에서 이미 거기에있는 것?
James Toomey

70

불쾌한 속임수 :

  1. Segue를 푸시로 변경하십시오.
  2. 필요한 콘텐츠 설정
  3. 다시 표시하도록 설정

그러면 콘텐츠를 편집 할 수 있고 segue에 대해 더 이상 사용되지 않는 스타일이 있습니다.


정말 못 생겼어. 그러나 이것은 Xcode 7.3UIBarButtonItem 의 뷰 컨트롤러에서 작동합니다 .
mikeho

OMG, 여전히 XCode 8.2.1에서 작동합니다. 언제 수정 되나요? 아마 결코,
디마 Rostopira

이것은 코드로 추가하지 않고 찾은 유일한 방법입니다.
Joshua

신 오 ... 당신에게 (Y) 감사
나시르 칸

2 년이 지난
후에도이

33

스토리 보드의 뷰 컨트롤러에 Navigation Item. 오브젝트 라이브러리에서 하나를 끌어서 뷰 컨트롤러에 놓을 수 있습니다.

그런 다음 탐색 모음의 왼쪽 또는 오른쪽으로 막대 단추 항목을 끌어서 놓을 수 있습니다.


1
이 일을하지만, 난 당신이 컨트롤러에 푸시 SEGUE했다으로이 자동으로 긴으로 수행하는 데 사용 느낌
aryaxt

정답이되어야합니다. 나머지는 나에게 해킹 것 같다
MK 영에게

23

나는 그것을 해결했다. 'Navigation Item'을 상세보기로 드래그합니다. Bar Button Item에서 드래그 할 수 있습니다.


8

이 문제를 해결 한 방법은 UINavigationController를 Storyboard로 드래그하고 여기에 UIBarButtonItems를 추가하는 대신 UITableViewController를 드래그 한 다음

Editor-> Embed In-> Navigation Controller

이전과 동일한 결과를 얻었지만 문제없이 탐색 모음의 양쪽에 UIBarButtonItems를 추가 할 수있었습니다.


올라간다 !!
Vin

5

실제로 xcode 문제입니다. 나를 위해 일한 한 가지 트릭은 VIEW FILE STRUCTURE ON THE LEFT에 막대 버튼을 추가하는 것입니다. 도움이 되었기를 바랍니다. :)


작동합니다! 나는 애플이 Xcode 8.2로 버그를 수정하는 한 이것이 해결책이라고 생각한다
Arjun Kalidas

5

버그라고 생각합니다. 같은 문제가 있었는데 크기 클래스를 비활성화 한 다음 활성화하여이 문제를 해결했습니다.

인터페이스 빌더 문서에서 크기 클래스를 비활성화 및 활성화 할 수 있습니다.

여기에 이미지 설명 입력


4

나는 또한이 문제가 있었고 프로젝트를 닫았다가 다시 열었습니다.


3

나는 그것이 XCode 특질이라고 생각합니다. 나는 같은 문제가 있었다. 마침내 Xcode를 재설정하고 스토리 보드의 배치 위치를 변경해야했습니다. 지금 작동하고 있습니다.


3

나는 이것이 Xcode의 버그라고 생각합니다. Xcode 8 segue에서 탭 막대보기 컨트롤러 앞에있는 스토리 보드를 모든 옵션 ( show detail, present...)으로 변경합니다. 그런 다음 show. 막대 단추 항목을 끌어서 타일을 수정하십시오. 그것은 나를 위해 작동합니다!


1

프로젝트를 "청소"해 보셨습니까? 가끔 도움이된다는 것을 알고 있습니다 ( "제품"> "청소"로 이동). 또는 탐색 모음을 삭제하고 다시 시도하십시오.

프로그래밍 오류라고 생각되면 자유롭게 코드를 전달하십시오. 최선을 다해 도와 드리겠습니다. :)


1

xCode IDE를 재설정해야합니다. xCode를 닫고 터미널에 아래 코드를 작성하면 작동합니다.

rm -rf $HOME/Library/Application Support/Developer/Shared/Xcode
rm -rf $HOME/Library/Preferences/com.apple.dt.Xcode.*
rm -rf $HOME/Library/Saved\ Application\ State/com.apple.dt.Xcode.savedState
rm -rf $HOME/Library/Developer/Xcode

1

같은 문제. 내비게이션 컨트롤러 내부에 테이블 뷰 컨트롤러가 있고 체인 아래에있는 많은 뷰 컨트롤러가 있습니다. FIRST 루트 뷰 컨트롤러에 대해 'Navigation Item'이 자동으로 생성되었으며 문제없이 여기에 'Bar Button Item'을 추가 할 수있었습니다. 스토리 보드를 통해 드래그 앤 드롭합니다. 하지만 그게 전부입니다. 다음 테이블 뷰 컨트롤러 및 추가 뷰 컨트롤러에서는 초기 탐색 컨트롤러 (자동 생성 된 뒤로 버튼이 표시됨) 내에 있었지만 스토리 보드에서 막대 버튼 항목을 추가 할 수 없었습니다.

Wael Showair의 솔루션이 저에게 효과적이지 않았습니다. 바 버튼 항목이 나타나지 않습니다.

결국 프로그래밍 방식으로 해결했습니다 (Swift 2.0).

var testButton = UIBarButtonItem(title: "Test Button", style .Plain, target: self, action: "testButtonMethod")
self.tabBarController?.navigationItem.rightBarButtonItem = testButton

추가 탐색 항목이나 바 버튼 항목이 필요하지 않습니다.


1

나는 너무 같은 문제에 직면했다. 나는 루트 뷰 컨트롤러 옵션을 선택 하여이 문제를 해결할 수 있었고 시뮬레이션 된 매트릭스에서 Top bar 옵션을 Opaque Navigation Bar로 변경하고 네비게이션 바 위에 항목을 추가 할 수있었습니다. 이 대답은 누군가를 도울 것입니다.


1

xcode 8에서도 같은 문제가 발생했습니다. xcode를 닫고 프로젝트를 다시 열면 문제없이 루트 컨트롤러에 막대 버튼을 추가 할 수있었습니다.


1

XCode 8의 경우

여기에 많은 답변이 있습니다. 나는 그들 중 일부를 시도했지만 그것을 만들 수 없었다. 그래서 내 솔루션을 찾았습니다.을 선택 하고 Attributes Inspector 섹션으로 ViewController이동 하여 Top BarOpaque Navigation Bar 및 Boom으로 변경하십시오 . 스토리 보드에 탐색 표시 줄이 표시됩니다. 제목을 변경하거나 일부 항목을 추가 할 수 있습니다. Opaque 를 유지하지 않으려면 스타일을 Inferred로 변경할 수 있습니다 .

여기에 이미지 설명 입력


1

Xcode 10에서는이 새로운 뷰 컨트롤러로가는 segue의 유형을 'Push (deprecated)'로 변경하고이 전환을 한 후 허용 된 탐색 항목을 추가했습니다. 원래 원하는 segue 유형으로 다시 전환하면 탐색 항목이 유지됩니다.


0

"Bar Button Item"을 "Navigation Controller"로 드래그하는 대신 "Detail View Controller"로 드래그하십시오. 상세보기를 "탐색보기"에 임베드하면 "탐색 항목"이 "상세보기 컨트롤러"에 추가됩니다. "Bar Button Item"을 탐색 항목의 오른쪽으로 드래그하면 항목이 "Right Bar Button Items"아래에 포함됩니다.


0

Mark Lyons가 말했듯이 동일한 솔루션을 사용했습니다.

  • 먼저 푸시 segue 사용
  • 바 항목 추가
  • segue를 보여주기 위해 돌아가다
  • 끝난

0

Xcode 11에서는 버튼을 탐색 막대로 끌어 막대 버튼을 만들 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.