【问题标题】:Empty MKMapView when switching from UITableView从 UITableView 切换时为空 MKMapView
【发布时间】:2011-05-16 07:59:13
【问题描述】:

我在 UINavigationController 中有一个 UITableView,其中包含一个 rightBarButtonItem,它应该隐藏 UITableView 并改为显示 MKMapView。该按钮似乎很好用:它隐藏了 UITableView,并显示了 MKMapView。但是,这个 MKMapView 是空的。如,完全白色。我尝试使用 UILabel(仅用于测试目的),但也没有出现,因此当我将 MKMapView(和 UILabel)添加到视图层次结构时,一定会出现问题。一些相关代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.mapView = [[MKMapView alloc] init];
    mapView.hidden = YES;

    [self.view addSubview:self.mapView];

    // Some other stuff, table set up, etc.
}

即继承自 UITableViewController 的类的 viewDidLoad。现在,我使用以下方法,当点击 UINavigationController 的 rightBarButtonItem 时会调用该方法:

- (void) toggleView {

    if (self.mapView.isHidden) {

        self.mapView.hidden = NO;
        self.tableView.hidden = YES;
        self.viewButton.title = @"List";
    }

    else {

        self.mapView.hidden = YES;
        self.tableView.hidden = NO;
        self.viewButton.title = @"Map";
    }

}

我确定该函数已被调用,我已使用 NSLog 进行了检查。此外,UITableView 正确消失,并且,我假设 MKMapView(或任何其他 UIView 对象)出现,但为空/完全白色。有人知道为什么我在尝试切换到地图视图时看不到地图吗?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    你应该给它一个大小和位置。
    CGSize 大小 = self.view.frame.size;
    self.mapView =[[MKMapView alloc] initWithFrame:CGRectMake(0,0, size.width, size.height)];

    要在控制台中检查大小,请在您的工具视图方法中添加以下行:
    NSLog(@"%@", self.mapView);

    【讨论】:

    • 我添加了那个,现在它告诉我mapView 的帧是 320 x 460,所以这是正确的。此外,它表明该对象没有隐藏,这让我认为 mapView 没有(正确地)添加到子视图中,所以屏幕是白色的只是因为 tableView 被隐藏了,而不是因为地图视图是白色的。 [self.view addSubview:mapView] 在我看来是对的..
    • 我现在要做的是记录 self.view 及其所有子视图。 for (UIView* view in self.view.subviews) NSLog(@"%@", view);视图的另一种调试技术是更改背景颜色以实际查看视图在哪里。
    • 无论如何你不应该那样做。您应该为您的地图创建一个视图控制器并使用 pushViewController 或 presentModalController。
    • 我认为这可能更容易,所以我就这样做了。它现在工作正常,但我正在使用 addSubview 并将 hidden 属性设置为 YES 或 NO,具体取决于用户选择的视图。这是否有任何(性能)​​上升或下降>
    • Speedwise 我不这么认为。但是您可能对内存警告过程有问题。每个视图控制器都会收到一个内存警告,它可以让您在内存变低时释放视图。如果您拥有所有视图,在一个视图控制器中,您可能会发现很难释放未使用的视图。
    猜你喜欢
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多