UIViewController には多くの UINavigationController を含むタブバーがあります。タブバーはプログラムで作成されます。最初の UITabItem をクリックすると UITable が表示され、もう一度クリックするとマップが表示されるので、それらを切り替えることができます。UITable と MKMapView は同じビューにあり、sethidden yes または no を使用してそれらを切り替えます。問題は、これが機能しないことです。理由はわかりましたが、ここで起こっている理由はわかりません。非表示と表示を行う関数のコードです。
-(void) showMap
{
fieldsTableView.hidden = YES;
[mapView setHidden:NO];
}
-(void) showList
{
fieldsTableView.hidden = NO;
mapView.hidden = YES;
}
これらのメソッドを呼び出すコードは次のとおりです。
-(void) showFieldsView
{
@try
{
if(self.fieldsViewController == nil)
{
self.fieldsViewController = [[FieldsViewController alloc] initWithNibName:@"FieldsView" bundle:nil];
}
if(currentViewController == nil)
{
[self showFieldsListView];
currentViewController = fieldsNavController;
}
NSString *viewtype = [[NSString alloc] initWithString:[(UITabBarItem *)[self.tabBar.items objectAtIndex:0] title]];
if(currentViewController == self.fieldsNavController)
{
if (viewtype == @"List")
{
[(UITabBarItem *)[self.tabBar.items objectAtIndex:0] setTitle:@"Map"];
[(UITabBarItem *)[self.tabBar.items objectAtIndex:0] setImage:[UIImage imageNamed:@"map.png"]];
[fieldsViewController showMap];
}
else
{
[self.fieldsViewController showList];
[(UITabBarItem *)[self.tabBar.items objectAtIndex:0] setTitle:@"List"];
[(UITabBarItem *)[self.tabBar.items objectAtIndex:0] setImage:[UIImage imageNamed:@"list.png"]];
}
}
else
{
[self showFieldsListView];
currentViewController = self.fieldsNavController;
}
[viewtype release];
}
@catch (NSException *exception) {
NSLog(@"Exception in tabViewControlelr showFieldsView \nDescription %@", [exception description]);
}
}
- (void) showFieldsListView {
[self.fieldsNavController viewWillAppear:YES];
[self.fieldsNavController.view addSubview:tabBar];
[self.view addSubview:self.fieldsNavController.view];
}
私は NSLOG を実行しましたが、これは私が見つけたものです: showMap または showList 関数を呼び出すと、それが呼び出され、内部で何が行われますが、プロパティにアクセスされず、NULL が表示されます (別の文字列プロパティを表示しようとすると、 NULL) 宣言は次のとおりです。
UITableView * fieldsTableView;
MKMapView *mapView;
と
@property (nonatomic, retain) UITableView * fieldsTableView;
@property (nonatomic, retain) MKMapView *mapView;