2012-11-08 3 views
0

저는 xcode를 처음 접했고 5 일 동안이 문제에 고심하고 있습니다. 머리가 거의 날아가고 있습니다. 왜냐하면 이것이 매우 단순해야한다는 것을 알고 있기 때문입니다!다른 탭에서 생성 된 개체로 표보기를 채우는 방법은 무엇입니까?

2 탭이 달린 탭 기반 iPhone 응용 프로그램이 있습니다. 첫 번째 항목에서는 새 항목을 만들고 이미 작성한 "저장소"NSObject 클래스 안에 NSMutableArray에 저장하려고합니다.

이 저장소 클래스에는 add, remove, update 및 fetchAll Items와 같은 메소드가 있습니다. 마지막은 NSMUtable 배열에 저장된 모든 항목을 반환하는 메서드입니다.

또한 항목을 나타내는 NSObject "Item"클래스가 있습니다.

두 번째 탭에서 첫 번째 탭에서 만든 항목을 채우고 "리포지토리"클래스에 저장되어있는 테이블보기 컨트롤러가 있습니다.

내 질문은 :

  • 나는 내가 "저장소"클래스 메소드를 호출 할 수 있도록하는 과정 어딘가에서 내 저장소 init을 ALLOC해야합니다. 문제는 첫 번째 탭 컨트롤러에 저장소를 할당하면 첫 번째 탭이로드 될 때마다 저장소가 다시 초기화되고 항목이 사라지는 부분이 할당된다는 것입니다. 두 번째 탭에서도 마찬가지입니다.

그래서 첫 번째 탭보기에서 "추가"메소드를 호출하고 두 번째 탭보기에서 "삭제"및 "fetchAll"메소드를 호출 할 수 있도록 저장소를 할당해야합니다 (테이블 같은 저장소 데이터에 대해 작업하고 있음을 보증합니까?

미리 감사

답변

0

에 본인은 "저장소"클래스 메소드를 호출 할 수 있도록하는 과정 어딘가에서 내 저장소 init을 ALLOC해야합니다. 문제는 첫 번째 탭 컨트롤러에 저장소를 할당하면 첫 번째 탭이로드 될 때마다 저장소가 다시 초기화되고 항목이 사라지는 부분이 할당된다는 것입니다. 두 번째 탭에서도 마찬가지입니다.

싱글 톤이 필요할 수도 있습니다.

싱글 톤은 앱의 어느 곳에서나 액세스 할 수있는 고유 한 전역 개체입니다. 첫 번째 액세스에서는 또한 생성됩니다. 후속 액세스에서 기존 오브젝트가 리턴됩니다.

this post for a good tutorial을 살펴보십시오.

+0

감사합니다. 정말 도움이되었습니다. 테이블 뷰를 채우는 중에 다른 문제가 발생했습니다. 내 "numberOfrowsInSection 방법이 같다 : - (NSInteger)를 tableView (jQuery과 *)를 tableView numberOfRowsInSection (NSInteger) 섹션 { 저장소 * sharedRepository = 리포지토리 sharedRepository] 복귀 [sharedRepository fetchAllItems] 카운트]; } 하지만이 방법은 처음으로 테이블 뷰가로드 될 때만 호출되며 배열에 밀어 넣는 첫 번째 항목 만 테이블에 표시되기 때문에 생각합니다. 어떤 도움이 필요합니까? – Joaocdn

+0

if 테이블 콘텐트를 변경해야한다면, 테이블을 새로 고침해야한다. 테이블 컨트롤러'tableView' 속성에서'reloadData'를 호출하십시오. – sergio

+0

고맙습니다. 새로운 아이템을 만드는 데 문제가 있습니다. 지금 괜찮아요, 다시 도움을 주셔서 감사합니다! – Joaocdn

0

앱 위임의 '저장소'클래스에 대한 속성을 가질 수 있고 앱 실행이 끝나면 초기화 할 수있는 것처럼 들립니다. 그런 다음 코드의 어느 부분에서나 액세스 할 수 있습니다.

또는 UITabBarViewController를 서브 클래스 화하고 컨트롤러의 viewDidLoad 메서드에서 'Repository'개체를 초기화 할 수 있습니다.

+0

도움을 주셔서 감사합니다. 지금은 @ sergio의 제안에 충실합니다 :) – Joaocdn

0

데이터 전달과 관련하여 문제가있는 것으로 보입니다. @sergio는 싱글 톤을 사용할 수 있다고 제안했습니다. 또한 모든 글로벌 메소드에 Utility 클래스를 사용하는 것이 좋습니다. 따라서 다른 탭에서 변수를 업데이트 할 수 있으며 값을 전환 할 때 값이 반영됩니다.

+0

@sergio 제안을 따라했습니다. 또한 전역 메소드에 대한 유틸리티 클래스를 작성하는 방법도 고려할 것입니다. 도와 주셔서 감사합니다! – Joaocdn

관련 문제