2012-02-27 3 views
1

두 개의보기 컨트롤러가 있고 두 번째보기 컨트롤러는 첫 번째보기 컨트롤러에서 레이블을 변경해야합니다. 이 작업을 수행하는 한 가지 방법은 첫 번째보기 컨트롤러를 속성으로 만들어 두 번째보기 컨트롤러에서 직접 변경할 수 있도록하는 것입니다.2 개의보기 컨트롤러와 스파게티 피하기

오직 스파게티 프로그래밍이라는 문제가 있습니다 ... 어떻게이 트랩을 사용하지 않고이 목표를 달성 할 수 있습니까?

내가 한 가지 생각은 위임 프로토콜을 사용하여이 작업을 수행하는 것이 었습니다. 다른 방법이라면 의견이 궁금합니다.

답변

1

레이블 변경과 같은 작은 작업을 수행하는 간단한 응용 프로그램의 경우보기 컨트롤러에 대한 속성을 만들지는 않습니다. 응용 프로그램이 커지거나 많은 레이블을 변경해야하는 경우 위임자와 프로토콜을 설정하여 변경하는 것이 좋습니다. 주로 팀에게 달려 있습니다. 팀 또는 규모가 커지고 성장하는 앱을 사용하는 경우 훌륭한 MVC 및 KVO 관행을 위해 어쨌든 사용하게 될 가능성이 있으므로 위임자 및 프로토콜을 사용해 볼 수 있습니다. (어떤 코딩에 새로운 의미로하지만) 내가 상대 목적 C 멍청한 놈이야 없기 때문에

0

아마도 그것은, 그러나 위임 방식은 거의 항상 나에게 연장 파스타 어떤 방식으로 될 것 같다 - 내장을 제외하고 - UITableViewController와 같은 시스템에서.

최근에 사용자 지정 테이블 뷰 셀의 레이블을 업데이트하는 시스템을 만들어야하고 NSNotification을 사용하는 것이 훨씬 간단하고 이해할 수있는 것으로 나타났습니다. 새 값이 존재에 와서 컨트롤러, 우리는 통지를 게시 :

[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdatedDatesNotification" object: formattedDates]; 

을 ... 그리고 라벨을 포함하는있는 UITableViewCell을 생성하는 서브 클래스에서, 우리는 특정 통지를 듣고 :

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateDateDisplays:) name: @"UpdatedDatesNotification" object: nil]; 

... "formattedDates"(이 경우)를 "updateDateDisplays"메서드에 전달합니다.

나는 이것이 다소 잘못되었다고 말할 것입니다.하지만 나는 1) 최소한의 코드로 작업을 완료 할 수 있습니다. 2) 쉽게 읽을 수 있고 검색 할 수 있습니다. 3) 지옥을 저장합니다. 많은 시간 동안, 당신이 살아있는 동안 이것을하고 있다면, 돈입니다.

관련 문제