如何从当前屏幕刷新UITableView

时间:2011-10-06 12:14:29

标签: iphone uitableview

我在UITableView内使用UINavigationController

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

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

非常感谢

编辑:

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

这是我的ViewDidappear方法。我想要的是,每当我点击任何保留在同一个UITableView屏幕上的按钮时,它应该重新加载我的tableView,而不是数据阵列有任何变化。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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];
}

答案 2 :(得分:0)

如果您的UITableViewDelegate方法未开始调用,则表示您的tableView商店未设置,或者tableView未设置delegate。由于您似乎有多个视图控制器(一个使用tableView,另一个使用UIButtons),那么您还应该考虑如何最好地在视图控制器之间进行通信 - 通过传递tableView(打破封装,所以不好),通过委托/协议方法调用,通过NSNotification或其他一些适当的方法。