소셜 미디어 IOS 앱에서보기 컨트롤러가 바뀌면 버튼을 추가하는 방법 - iOS 앱의보기 컨트롤러를 새로운 기본보기 클래스로 대체 할 수 있습니다 (새 기본보기 클래스가 표시해야하는 버튼에 액세스 할 수 없거나 팝업 오버가 발생했기 때문)

IOS 앱에서보기 컨트롤러가 바뀌면 버튼을 추가하는 방법 - iOS 앱의보기 컨트롤러를 새로운 기본보기 클래스로 대체 할 수 있습니다 (새 기본보기 클래스가 표시해야하는 버튼에 액세스 할 수 없거나 팝업 오버가 발생했기 때문)

비디오: iPad 또는 iPhone에서 HP Smart를 사용하여 무선 HP 프린터를 설정하는 방법 | HP 프린터 | HP 2024

비디오: iPad 또는 iPhone에서 HP Smart를 사용하여 무선 HP 프린터를 설정하는 방법 | HP 프린터 | HP 2024
Anonim

iOS 응용 프로그램의보기 컨트롤러를 동일한 기본 클래스의 새로운보기 컨트롤러로 교체 할 수 있으므로 새보기 컨트롤러에 표시해야하는 버튼에 대한 액세스가 없거나 해지해야하는 팝업 오버입니다. 다행히도 Apple의 사람들은이를 수행하기에 완벽한 장소를 제공합니다.

테이블 엔트리를 탭할 때 segue가 트리거 될 때 - 새로운 컨트롤러가 뷰를 제자리에 슬라이드시키기 전에 스토리 보드 런타임은 현재 뷰 컨트롤러의 메서드를 호출하여 뷰 컨트롤러에 데이터를 전달할 수있게합니다. 에 대해 표시됩니다.

즉, 버튼 정보를 새보기 컨트롤러에 전달한 다음 시작하기도합니다. 그런 다음 prepareForSegue: sender:는 viewDidLoad에서 사용할 버튼을 할당하고 View Controller도 닫습니다. prepareForSegue: sender: segue가 수행 될 것으로 View Controller에게 통지하는 View Controller 메소드이다. segue는 UIStoryboadSegue 객체이며 segue와 관련된 뷰 컨트롤러에 대한 정보를 포함합니다.

이 메소드의 기본 구현은 아무 효과가 없지만 UIViewController 하위 클래스는이를 무시하고 표시 할 뷰 컨트롤러로 데이터를 전달할 수 있습니다. segue 객체는 대상 뷰 컨트롤러뿐만 아니라 소스 뷰 컨트롤러를 가리키는 속성을가집니다. Segue는 원본 및 대상보기 컨트롤러에 대해 동시에 알고있는 유일한 개체입니다.

발신자가 단편을 일으키는 대상이지만 여기서는 사용할 필요가 없습니다.

코드를 prepareForSegue: sender: 메소드에 추가하여 DestinationController를 UISplitViewController 대리자로 만들고 popOverButton 및 masterPopoverController 속성을 할당합니다.

또한 팝업이 사라지면 사용자가보기를 터치 할 필요가 없도록 팝업을 닫습니다.

모든 작업을 수행하려면이 코드를 MasterViewController에 추가하십시오. 엠.

- (void) prepareForSegue: (UIStoryboardSegue *) 보낸 사람: (id) 보낸 사람 {if ([UIDevice currentDevice] userInterfaceIdiom == UIUserInterfaceIdiomPad) {DetailViewController * currentDetailViewController; (([UITO])). (UINavigationController *) [self. splitViewController. viewControllers lastObject]). topViewController; 그렇지 않으면 currentDetailViewController = [self.splitViewController. viewControllers lastObject]; if (currentDetailViewController. masterPopover Controller! = nil) [currentDetailViewController. masterPopover 컨트롤러 dismissPopoverAnimated: 예]; DetailViewController * destinationDetailViewController; if ([targetViewController isKindOfClass: [UINavigationController class]]) destinationDetailViewController = (DetailViewController *) ((UINavigationController *) segue. topViewController; else destinationDetailViewController = segue. destinationViewController; 본인. splitViewController. 델리게이트 = destinationDetailViewConroller; destinationDetailViewController. popOverButton = currentDetailViewController. popOverButton; destinationDetailViewController. masterPopoverController = currentDetailViewController입니다. masterPopoverController;}}

새로운 Detail Controller가 필요로하는 버튼과 popover 속성을 가지고 있기 때문에 현재 Detail View 컨트롤러를 찾는 것으로 시작합니다.

이 코드는보다 복잡해 보입니다. 먼저 iPad에서 실행 중인지 확인합니다. 만약 그렇다면 splitViewController의 viewController 배열에있는 뷰 컨트롤러 목록에 액세스하여 현재의 Detail View 컨트롤러를 얻습니다. 다행스럽게도 UIViewController 클래스에는 splitViewController 속성이있어 쉽게 사용할 수 있습니다.

그러면 네비게이션 컨트롤러가 viewControllers 배열에 있는지 확인하고, 있으면 거기에 네비게이션 컨트롤러의 topViewController (현재 뷰 컨트롤러)를 가져옵니다. 그렇지 않다면 배열의 컨트롤러를 사용하기 만하면됩니다. (여기에서 계속 진행되는 캐스팅이 많이 보일 것입니다.)

if ([[. splitViewController. viewController & # x2028; lastObject]

isKindOfClass: [UINavigationController & # x2028; class] currentDetailViewController = (RTDetailViewController *) 

(UINavigationController *)

[자체. splitViewController. viewController

lastObject]). topViewController; else

currentDetailViewController = & # x2028; [본인. splitViewController. viewControllers

lastObject];

다음으로, 팝 오버가 보일 경우, 그것을 해제하고 싶습니다. popover 컨트롤러가 있는지 확인합니다 (헤더 파일로 이동하여 속성을 액세스 가능하게해야하는 이유입니다.)

if (currentDetailViewController. masterPopoverController

! = nil)

[currentDetailViewController. masterPopoverController > dismissPopoverAnimated: YES]; 

다음으로 현재 Detail View 컨트롤러를 찾는 데 사용 된 로직과 비슷한 로직을 사용하여 새 대상 컨트롤러 (전환 대상 컨트롤러)를 찾습니다.

if ([segue. destinationViewController < isKindOfClass: [UINavigationController

클래스]]) destinationDetailViewController =

(DetailViewController *) (UINavigationController *)

segue. destinationViewController; 

그러면 Split View Controller 대리자를 새 View Controller로 설정하여 splitViewController를 가져옵니다. willHideViewController: withBarButtonItem: forPopoverController: an splitViewController: willShowViewController: invalidatingBarButtonItem: 메시지입니다.

자아. splitViewController. delegate = destinationDetailViewController;

마지막으로 새 뷰 컨트롤러에서 popOverButton 및 masterPopOverController 속성을 할당합니다.

destinationDetailViewController. popOverButton =

currentDetailViewController. popOverButton;

destinationDetailViewController. masterPopoverController =

currentDetailViewController. masterPopoverController; 물론, popover를 취소하고 속성을 지정하지만 버튼을 표시하는 데 아무 것도하지 않습니다. 실제로는 viewDidLoad에서 완료됩니다.

또한 prefferedContentSize 속성에 값을 할당하여 팝업 창 크기를 지정할 수 있습니다. 실제 크기가 축소되어 Popover가 화면에 맞고 키보드가 제시 될 때 Popover가 키보드와 겹치지 않는다는 점을 알아야합니다. MasterViewController의 awakeFromNib 메소드에서이를 수행하는 코드를 볼 수 있습니다.

- (void) awakeFromNib {if ([[UIDevice currentDevice]

userInterfaceIdiom] == UIUserInterfaceIdiomPad) 

& # x2028; {본인. clearsSelectionOnViewWillAppear = NO;

자아. awakeFromNib 메시지는 모든 객체가로드되고 초기화 된 후에 스토리 보드에서 인스턴스화 된 객체로 보내집니다 (960> 0, 600.0). 메시지가 보내지면 모든 콘센트 및 작업 연결이 설정됩니다.

여기서 조언을 무시하고 팝 오버 컨트롤러를 닫지 않으면 팝 오버 창 외부의 탭으로 인해 팝 오버가 해제됩니다. 그러나 사용자가 지정된보기와 상호 작용하고 passthroughViews 속성을 사용하여 popover를 닫지 않도록 할 수는 있습니다 (여기서 수행하지는 않겠지 만). 그러고 나면 스스로 팝 오버를 해산해야합니다.

IOS 앱에서보기 컨트롤러가 바뀌면 버튼을 추가하는 방법 - iOS 앱의보기 컨트롤러를 새로운 기본보기 클래스로 대체 할 수 있습니다 (새 기본보기 클래스가 표시해야하는 버튼에 액세스 할 수 없거나 팝업 오버가 발생했기 때문)

편집자의 선택

소셜 미디어 측정법을 사용하여 판매를 늘리는 방법 - 소셜 미디어 측정 항목을 사용하는 한 회사

소셜 미디어 측정법을 사용하여 판매를 늘리는 방법 - 소셜 미디어 측정 항목을 사용하는 한 회사

판매를위한 크로스 플랫폼 참여는 Best Buy입니다. Best Buy는 모바일 쇼핑 및 소셜 쇼핑을 매장의 각 품목에 대한 QR 코드를 사용하여 매장 내 경험으로 가져 왔습니다. 고객은 상점의 각 항목에 대한 QR 코드를 스캔하여 리뷰를 포함한 더 많은 정보를 얻을 수 있습니다.

블로그에 Google 웹 로그 분석을 설치하는 방법 - 아직없는 경우

블로그에 Google 웹 로그 분석을 설치하는 방법 - 아직없는 경우

블로그 또는 사이트에서 Google 웹 로그 분석 추적 통계를 사용하여 빠르고 쉽게 설치할 수 있습니다. 설치는 1 분 밖에 걸리지 않으며 완전히 고통스럽지 않습니다. 먼저 Google 애널리틱스 ID를 가져 와서 어딘가에 작성하십시오. 쉽게 찾을 수 있습니다. Google 애널리틱스와 대시 보드에서 로그인하십시오.

웹 사이트에 Google 웹 로그 분석을 설치하는 방법 - 웹 사이트에 Google 웹 로그 분석을 설치하는

웹 사이트에 Google 웹 로그 분석을 설치하는 방법 - 웹 사이트에 Google 웹 로그 분석을 설치하는

단 1 분이며 고통스럽지 않습니다. 곧 Google 애널리틱스 덕분에 잠자는 동안 소셜 미디어 측정 항목을 추적하게 될 것입니다. 먼저 Google 애널리틱스 ID를 가져 와서 어딘가에 작성하십시오. 쉽게 찾을 수 있습니다. Google 애널리틱스 및 대시 보드에 로그인하고 톱니 바퀴 아이콘을 클릭하기 만하면됩니다. ...

편집자의 선택

마케팅 자동화에서 분할 테스트의 기본 이점 - A / B 테스트라고도하는 더미 테스트

마케팅 자동화에서 분할 테스트의 기본 이점 - A / B 테스트라고도하는 더미 테스트

다 변수 테스트뿐만 아니라 요인 일정을 유지하고 다양한 시나리오에서 다른 결과를 테스트하여 마케팅 자동화 테스트를 수행하는 것을 의미합니다. 하나의 유료 검색 광고를 통해 사람들을 2 개의 개별 방문 페이지로 유도하는 것이 그 예입니다. 방문 페이지 테스트하기 ...

자동화 된 마케팅을위한 컨텐츠 작성의 기본 - 인형

자동화 된 마케팅을위한 컨텐츠 작성의 기본 - 인형

마케팅 자동화 도구의 사용을 극대화하기 위해 먼저 사람과 콘텐츠와의 관계를 이해해야합니다. 올바른 사람에게 올바른 콘텐츠를 보내는 경우에만 자동화가 유용합니다. 이를 올바르게 수행하는 방법에 대한 기본적인 이해를 돕기 위해 사람들은 두 가지 유형이 관련되어 있음을 인식해야합니다 ...

Microsoft Dynamics CRM을 사용하는 e-Mail 및 Microsoft Dynamics CRM- 더미

Microsoft Dynamics CRM을 사용하는 e-Mail 및 Microsoft Dynamics CRM- 더미

고객 관계를 관리하는 데 도움이되는 Microsoft 도구 현대 직장에서 가장 유용한 도구 중 하나는 전자 메일이므로 전자 메일을 만들고 읽거나, 전자 메일을 특정 레코드에 연결하거나, 일정을 관리하는 데 숙련되어 있어야합니다. ...

편집자의 선택

웹 호스팅 계획에서 더 많은 것을 얻기위한 10 가지 팁 - 인형

웹 호스팅 계획에서 더 많은 것을 얻기위한 10 가지 팁 - 인형

당신은 자신의 웹 사이트 또는 블로그를 가지고 있고, 고객, 독자 또는 웹 호스팅 기술에 의존하는 추종자 만 있습니다. 다음 팁은 웹 호스팅 계획을 최대한 활용하는 데 도움이됩니다. 제어판에서 백업 옵션을 확인하십시오. 일부 제어판을 사용하면 자동화 된 백업을 수행 할 수 있습니다. ...

귀하의 웹 호스트가 귀하를 도와주지 않는 10 가지 사항 (무료) - 인형

귀하의 웹 호스트가 귀하를 도와주지 않는 10 가지 사항 (무료) - 인형

은 웹 호스트만큼 멋지고, 웹 사이트를 디자인, 제작 및 운영하는 데 도움이되는 일에는 한계가 있습니다. 그것은 모두 돈으로옵니다. 귀하가 기꺼이 지불하는 한 귀하의 호스트는 기꺼이 도움이 될 것입니다. 각 호스트는 다릅니다. ...