2009-10-08 2 views
1

이것은 쉬운 대답 일 수 있습니다.UITableView가있는 UITabBar - 테이블을 올바르게 볼 수 있지만 행을 선택할 수 없습니다.

먼저 SQLite에서로드 된 테이블이있는 탐색 응용 프로그램을 만들었습니다. rootViewController (UITableViewController)는 mainWindow.xib에서로드됩니다. 검색 및 범위 기능을 추가하고 행 선택에서 세부적인보기 (UIViewController)를 잘 밀어 넣고 테이블 및 필터링 된 결과, 검색 및 앞뒤로 다른 검색 범위를 탐색 할 수 있습니다. 모두 좋음, 오류 없음, 충돌 또는 경고 없음.

이제는 rootViewController 상단에 tabBar 인터페이스를 추가하려고했습니다 ... 2 일 후에 표시 할 TabBarController가 있습니다. (직접 RootviewController에서 구현하려고했으나 구현해야한다는 것을 알았습니다. 메인 윈도우에서) 탭 바에서 다른보기 (xib)를 선택할 수 있습니다. 하나의 탭에 IB가 할당 된 뷰가없고, RootViewController가 탭에 지정되어 있지 않아도이 탭 뷰의 첫 번째 스크린으로 이전에했던 것처럼 RootViewController로드를 볼 수 있습니다.

문제는이 방법으로로드 할 때 테이블의 행을 클릭 할 수 없다는 것입니다. 또는 RootViewController를 호출하여 탭을 만들면 맨 위에 검색 막대가 생기지 만 테이블은 비어 있습니다. 이것이 어떻게 든 appDelegate가 rootViewController를로드하고 있기 때문에 발생하는 것으로, 탭에 "로드"또는 "다시로드"하는 방법을 알지 못합니다. 탭바를 추가하기 전에 원래 mainWindow와 동일한 별도의 "search.xib"를 작성한 다음 TabItem에로드하려고 했으므로 appDelegate가 먼저 호출되었지만 시가 : 충돌이 발생하지 않았습니다. 나는 search.xib가 info.plist "Main nib file base name"으로 넣었을 때 잘 동작하는지 확인했다. 그리고 이것은 벌써로드되었고 TabBarController를 추가하기 전에 BS로 작동한다.

나는 시작할 것이다. 코드를 붙여 넣을 수 있지만 무엇이 누락되었거나 잘못되었는지 알아야 할 필요는 없습니다. 나는 [self.tableView reloadData]-(void)viewDidLoad에서 RootViewController.m이라고 부르지 만,이 문제를 전혀 돕지는 못한다.

아무도 도와 줄 수 있습니까? Mac OS X은 버전 10.5.8이고 Xcode 3.1.4를 사용하고 있습니다.

// Create and configure the main view controller. 
RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil]; 
rootViewController.violinMakers = violinMakers; 
[violinMakers release]; 



// Add create and configure the navigation controller. 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; 
self.navController = navigationController; 
[navigationController release]; 



// Configure and show the window, Override point for customization after app launch 
[window addSubview:[navController view]]; 
[window addSubview:tabBarController.view]; 
[window makeKeyAndVisible]; 

도움을 주셔서 감사합니다! 위의 마지막 단원에서는 RootViewController를 스택 맨 위에 놓아야하지만 어디에 있는지 잘 모르겠습니다.

// <AppName>AppDelegate.h 
@interface <AppName>AppDelegate: NSObject <UIApplicationDelegate, 
UITabBarControllerDelegate, UINavigationControllerDelegate>{ 
UIWindow *window; 
UINavigationController *navController; 
UITabBarController *tabBarController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UINavigationController *navController; 
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; 
@end 

벤 - 나는 rootViewController가 tabBarController 뒤에 있다는 것에 대해 알고 있습니다. 필자는 tabBar를 기본보기로 설정하는 방법과 navController를 탭으로 설정하는 방법을 알지 못합니다. 당신이 언급 한 튜토리얼을보고 그것이 설명하는 데 도움이되는지 확인하겠습니다. 감사합니다 벤!

09-10-14 업데이트

일부 진행 상황! 이제 NavBar가 맨 위에있는 탭에서 뷰를 볼 수 있습니다. 올바른 .xib 파일에서 제목으로오고 있으며 검색을 클릭 할 수 있으며 범위 단추는 올바른 이름입니다. ....하지만 전과 마찬가지로이 단계에 이르거나 닫을 경우 표 정보가이 탭에로드되지 않습니다 (모든 셀이 비어 있음). 테이블을이 셀에 제대로로드하려면 어떻게합니까? 이 창에보기가 전혀 할당되어 있지 않은 것처럼 실행시로드됩니다. 표 n Nav를 볼 수는 있지만 클릭 할 수 없습니다. (너무 가까이서, 너무 멀리 있습니다.) 이제 탭을 올바르게 설정했지만 테이블이 제대로로드되지 않습니다 ...RRRR

나는 방법에 viewController.m의 전형적인

[self.tableView reloadData]; 

있습니다

- (void)viewWillAppear:(BOOL)animated 

- (void)viewDidAppear:(BOOL)animated 

- (void)viewDidLoad 
에 0

그리고 다른 방법을 사용해 보았지만 탭을 선택하면 테이블 정보가 다시로드되지 않습니다.

이 표를 TabBar보기에서 올바르게 다시로드하는 방법에 대한 아이디어가 있으십니까?

나는 IB와의 설명에서 좀 더 나아간 tabBars에 대한 좋은 지침서를 찾았습니다. Twillo Embed Nav in a Tab Tutorial

+0

뷰 컨트롤러를 설정할 때 코드를 공유 할 수 있습니까? 앱 구성 방법을 이해하면 도움이됩니다. – Alex

답변

0

테이블 컨트롤러의 TOP에 탭 표시 줄 컨트롤러가 추가 된 것으로 보입니다. tabBarController를 설정하는 위치는 분명하지 않지만 창에 하나의보기 만 추가해야합니다 (두 번째 행을 추가하는 마지막 행과 두 번째 행에서 두 번째 행까지).

내비게이션 및 TabBar 컨트롤러의 기본 전제는 Tab Bar 컨트롤러가 기본이며, 내비게이션 컨트롤러를 탭 중 하나로 추가한다는 것입니다. 그런 다음 tabBarController.view를 창에 추가하십시오. 어느 탭이 선택되어 있는지가 눈에 보입니다.

이 주제에 대한 web에 게시 된 자습서가 있습니다.

+0

Hi Ben -이 자습서는 3.0 이전 버전입니다. 또한 IBuilder에서 여러 가지 변형을 시도했으며, 빈 필드가있는보기 또는 나열된 appDelegate.h/RootViewController.m이 아닌 탐색 모음을 만듭니다. 위. 앞에서 언급했듯이 필자가 원하는대로 뷰를 볼 수 있습니다. 탭을 클릭하면 테이블을 맨 앞으로 가져 와서 지금 선택할 수없는 행을 선택할 수 있습니다. – Digiguy

0

기본적으로 동일한 문제가있는 사람들을 위해 내가 찾은 바 있습니다. 쉬운 일이 아니며, 실제로 Apple에서 나중에 프로그램에서 탭 모음을 인스턴스화 할 것을 제안합니다. 예, 할 수 있지만 지금은 다른 방법을 제안 할 것입니다. 모달 뷰 컨트롤러가 tabBar처럼 훌륭하게 작동한다는 것을 알았습니다. 탐색 바에 배치 할 수 있기 때문에 크기는 작지만 부동산은 적습니다. 탭이있는 앱을 계획하는 경우 탭 기반 앱으로 시작한 다음 사용자 정의하고 나중에 탐색 구조를 변경하지 마세요. 이는 근본적인 문제입니다. 두 번째로 필자는 인터페이스 빌더에 대한 Apple의 설명서가 만족스럽지 않다고 판결했습니다. 모두가 솔기가 혼란스럽고 구현이 실제 최종 제품의 전문화를 제한하고 쉽게 만들어주지는 않습니다. 모든 요소를 ​​함께 연결하는 데 더 혼란스럽지 않습니다. 그건 정말 짜증 난다. 나는 여러 가지 방법을 시도해 보는데 2 주가 걸렸다. 그것은 불가능하지 않습니다. 단지 믿기지 않을 정도로 직관적이지 않습니다. 실수로 내리막 길을 하류로 바꿔야합니다. 정보에 액세스 할 수있는 방법에 대한 대안을 살펴보고이를 수행하는 모달보기와 같은 더 나은 방법을 찾거나 IB 동작이있는 간단한 단추를 사용하여 다양한보기 또는 추가 정보에 액세스 할 수 있습니다. 해피 프로그래밍! 커크

관련 문제