我有一个很大的问题,就是在我的应用中使用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;
}
答案 0 :(得分:0)
TableView的属性属性是弱定义的,如下所示将其更改为strong
@property (strong, nonatomic) IBOutlet UITableView *tableView
它应该工作!!!