reloadData在didUpdateToLocation方法中不起作用

时间:2013-12-29 15:54:07

标签: ios localization delegates tableview

我有一个很大的问题,就是在我的应用中使用tableView重新编译和重新加载数据。应用程序将是一个使用gps的简单跟踪/运动应用程序。它是选项卡式应用程序我有几个ViewController类和AppDelegate类。在App委托类中,我有locationManager并为他实现了didUpdateToLocation方法。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {


NSString *latitude = [NSString stringWithFormat:@"Lat. %f degrees", newLocation.coordinate.latitude];
NSString *longitude = [NSString stringWithFormat:@"Long. %f degrees",
                       newLocation.coordinate.longitude];
NSString *altitude =
[NSString stringWithFormat:@"Alt. %f m", newLocation.altitude];
NSString *speed = [NSString stringWithFormat:@"Speed %f m/s", newLocation.speed]; NSString *course =
[NSString stringWithFormat:@"Course %f degrees", newLocation.course];

[self.rows insertObject:latitude atIndex:0];
[self.rows insertObject:longitude atIndex:1];
[self.rows insertObject:altitude atIndex:2];
[self.rows insertObject:speed atIndex:3];
[self.rows insertObject:course atIndex:4];
[self.fourthViewContorller.tableView reloadData];
 NSLog(@"Location: %@", [newLocation description]);}

正如您所见,我尝试使用ReloadData消息重新加载数据。好吧它不起作用。 fourthViewContorller是指向tabelView所在的ViewController类的指针。 AppDelegate.h中的声明:

@property (strong, nonatomic) AppFourthViewController * fourthViewContorller;

同时在AppFourthViewController.m中,此方法可以工作并刷新数据

-(void) viewWillAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self.tableView reloadData];
}

我在iOS开发中的新手,我不确定我做的一切都是正确的。 Mabye我应该以某种方式将AppDelegate.h中的指针连接到storyboard中的视图?似乎这个指针没有导致正确的视图,因为新的数据不断出现在控制台上,而tabe的数据只有在我切换标签时才会改变。

以下是AppFourtViewController中的一些重要方法:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tv 
{
    return 1; 
}

- (NSInteger) tableView:(UITableView *)tv numberOfRowsInSection:(NSInteger) section 
{
    return 5; 
}

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *identifier = @"cell"; UITableViewCell *cell =
    [tv dequeueReusableCellWithIdentifier:@"cell"]; 

    if ( cell == nil ) 
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
        cell.accessoryType = UITableViewCellAccessoryNone; 
    }

    AppAppDelegate *delegate = (AppAppDelegate *)[[UIApplication sharedApplication] delegate];
    cell.textLabel.text = [delegate.rows objectAtIndex:indexPath.row];
    return cell; 
}

1 个答案:

答案 0 :(得分:0)

TableView的属性属性是弱定义的,如下所示将其更改为strong

@property (strong, nonatomic) IBOutlet UITableView *tableView

它应该工作!!!