2011-10-06 120 views
0

我在UINavigationController中使用UITableView如何从当前屏幕刷新UITableView

在第一屏幕上我有一个名称为alen,john,smith的表格视图。他们有3条记录。现在我进入第二个屏幕,并更新数据库中所有三条记录的名称。 在我的第一个控制器中显示UITableView,我在viewWillApear委托方法中使用了[seld.tableView reloadData]。每当我回到第一个屏幕时,我的viewWIllApear代表方法调用和我的UITableView刷新自己。

现在的问题是如果我从我自己的任何方法调用[self.tableview reloadData]而不是viewWIllApear。它会调用我的ViewDidLoad方法,但它不会调用我的uitableView委托来更新我的记录。 PLease任何人都可以帮助我如何更新我的tableView保持在同一屏幕上。 ?

非常感谢

编辑:

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

这是我ViewDidappear方法。我想要的是,只要我点击任何按钮保持在同一个UITableView屏幕上,它应该重新加载我的tableView,而不管数据数组中是否有任何变化。

+0

显示一些你的代码请参考 – booleanBoy

回答

0

结构中的这些按钮在哪里?他们是以编程方式创建的? 他们是uibutton子类吗? 即你打电话的方法在哪里?这听起来像你有自己的方法引用tableViewController的问题?

也许你应该在tableViewController上创建一个方法,然后从按钮中调用它。请显示您的方法代码,并指出方法所处的文件。

0

示例A:您创建按钮或其他所有内容都可能会触发界面构建器中的操作。持有的tableview中使用的方法类似下面的的viewController内部:

- (IBAction)updateTable:(id)sender 
{ 
    [self.tableview reloadData]; 
} 

很明显,你必须出口与IB的动作连接。

示例B:以编程方式创建按钮。

// inside your loadView or viewDidLoad method 
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self 
     action:@selector(updateTable) 
forControlEvents:UIControlEventTouchDown]; 
[button setTitle:@"Show View" forState:UIControlStateNormal]; 
button.frame = CGRectMake(x,y,width,hieght); 
[yourView addSubview:button]; 

在你的ViewController:

-(void)updateTable 
{ 
    [self.tableView reloadData]; 
} 
0

如果您UITableViewDelegate方法没有开始叫,那么无论你tableView出口未设置,或tableView没有delegate集。因为你似乎有多个视图控制器(一个使用tableView,另一个使用UIButton),那么你应该考虑如何在视图控制器之间进行最佳通信 - 通过传递tableView(打破封装,所以不好),通过代理/协议方法调用,通过NSNotification或其他适当方式。

+0

但我的uitableview插座已设置。它实际上会在我的屏幕重新出现时加载数据。那么当我调用[self.tableView reloadData]时,它不会被刷新? – Shah

+0

我建议你在该行上用断点运行调试器,然后检查[self tableView]的值,然后[[self tableView] delegate]。如果这是在表视图和委托代码中的一个单独的视图控制器中,那么这些值将不会被设置。 –