1

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;
4

0 に答える 0