2017-02-08 2 views
1

예를 들어 App Store에 두 개의 탭이 있고 두 개의 탭에 일부 응용 프로그램이있는 경우 클릭하여 하나를 다운로드하면 다른 하나의 응용 프로그램 상태가 자동으로 업데이트됩니다. iOS에서 NSNotificationCenter를 사용하여 그렇게 할 수 있습니까? 내가 예를 들어 Gmail 앱을 선택 그래서 후 Tab windowNSNotificationCenter를 사용하여 목록 항목 상태를 자동으로 업데이트하는 방법은 무엇입니까?

... Gmail selected

그리고 앱의 목록으로 돌아 갈 때 다음의 더 이상 응용 프로그램을 얻기 위해 나 한테 물어 아래의 이미지는 이미 업데이트됩니다 status updated

어떻게 가능합니까?

+2

이가 너무 좋은 하루를 가지고 더 나은 옵션처럼 보이는이 경우에 위임 패턴을 사용할 수 있습니다 광범위한 주제, 일반적으로 앱에서 모델 레이어를 구현하는 방법 [1] 화면간에 인스턴스 객체를 공유 할 수 있으므로 한 객체의 상태가 변경되면 코어 데이터를 사용하면 다른 화면에도 [2]가 표시되고 가져온 관리 객체는 자동으로 다시 사용됩니다 [3] 개체를 저장하고 다른 화면에서 알림을 받고 새로 고침하면 NSNotification이 적용됩니다. 다시 말하지만 너무 많은 옵션이 있습니다. – Alistra

+0

@Alistra 당신이 대답으로 쓸 수 있도록 최선의 하나를 선택할 수 있습니까? 정말 도움이 – Fagundes

답변

2

@Grigor Hakobyan의 의견을 바탕으로 웹에 파고 들기 시작했는데 그 말이 맞을 수도 있습니다.

이 기사를 읽으라고 말합니다. NSNotificationCenter는 정말 좋은 옵션이 아닙니다처럼 https://davidnix.io/post/stop-using-nsnotificationcenter/

그건 보이는, 당신은

2

단지 다시로드, NSNotificationCenter이 아주 나쁜 솔루션을 사용하여있는 tableView (collectionView) 사용자가 어떤 탭을 선택하고 고급 OOP 원칙 당신이 보여준 예처럼 세그먼트 컨트롤을 사용하는 가정

+0

내가 응용 프로그램 저장소를 확인하고 다시로드하는 것 같지 않습니다. NotificationCenter가 좋은 해결책이 아닌 이유를 더 잘 이해할 수있는 다른 말을 할 수 있습니까? 검색을 다시 시작하지 않고 uiviewcontroller를 다시로드해야합니까? –

+0

좋아, 내 영어가 나쁘다 (아마 너의 것보다 나쁘다). 그래서 아무런 문제가 없다. 단계를 이해하려고합시다. 처음으로 최고 차트를 열면 반드시로드됩니다. 승인. 그러나 검색 응용 프로그램에 가서 "Gmail"을 입력하면 거기에있는 응용 프로그램을 볼 수 있습니다. 두 위치 모두 동일한 상태의 앱을 보여줍니다. 이제 검색시 앱을 클릭하여 설치하면 앱이 차트 탭에서 상태를 업데이트합니다 (다시로드하지 않음). 다른 탭에서 속성을 설정할 때 IsDownloading 속성을 true로 업데이트하려면 어떻게해야합니까? 그 통보는 나에게 좋을 것 같지 않니? –

+0

각 앱마다 고유 한 ID가 있습니다. 생성 된 모든 앱 인스턴스를 간단한 사전에 다운로드하여 캐시 할 수 있습니다. 키는 앱 ID이며 값은 앱 다운로드 상태이므로 앱을 검색하고 새 인스턴스를 만들 때 캐시 된 다운로드 상태가 있는지 확인하고 할당합니다 새로운 인스턴스로. 나쁜 영어에 대해 유감스럽게 생각합니다 :) – grighakobian

0

를 사용하는 경우, 세그먼트를 선택할 때마다 호출하는 함수가 있어야합니다. 이 함수에서 데이터 또는 테이블 뷰를 다시로드 할 수 있습니다.

@IBAction func indexChanged(sender: UISegmentedControl) { 
    tableView.reloadData() 
}