UIToolBar与UITableView - 加载时TableView没有刷新

时间:2009-06-02 01:40:59

标签: iphone uitableview uitabbarcontroller

UIToolBar有两个视图,一个是带有UITextView的UIView和带有UITableView的UIView。

通过UIToolBar调用的UITableView。第一次加载UITableView时,它会命中数据库并获取信息。我“选项卡”回到UIView w / UITextViews选择一些数据,然后“tab”返回UITableView,但没有调用任何委托方法,如viewDidLoad或initWithNibName或任何东西,因此表中的数据是陈旧的。

所以,我找到了方法

-(void)viewWillAppear:(BOOL)animated { 

被调用,但是,它无法访问tableView,比如说,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

我偶然发现了这个建议:

  

“我似乎无法弄清楚如何制作   UITableView刷新......我找到了   这,看起来是一样的   我遇到的问题,

     

我所做的就是创造一个   MyTableViewController *属性   MyModalViewController类。之前   presentModalView,我存储表   查看控制器指向此   模态视图控制器中的属性。

     

现在我有一个表视图的引用   我在模态视图中的控制器   控制器。现在只需使用此存储   表视图控制器来定位它   tableView,然后reloadData。

     

感觉很脏但是完成了工作。“

如果这是答案,我不确定如何编码。

非常感谢!

  • SK

注意:我刚试过这个:

·H

 UITableView *tableViewPtr; 
@property (nonatomic, retain) UITableView *tableViewPtr; 

.m

@synthesize tableViewPtr; 

并存储在 -

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {:
 ... 
 self.tableViewPtr = tableView; 
 ... 

然后尝试从

调用它
-(void)viewWillAppear:(BOOL)animated {
 [self.tableViewPtr reloadData]; 

但这似乎不起作用。

4 个答案:

答案 0 :(得分:3)

mr-sk:您可能需要更多地了解Objective-C的工作原理。当您声明UIViewController(或子类)时,您只需实现UITableView协议:

@interface ViewWithTableView : UIViewController
    <UITableViewDelegate, UITableViewDataSource> {...}

然后在viewController中实现所需的协议方法。您需要实现一些方法来支持tableView。

如果您正在使用IB,请按以下方式定义您的界面:

@interface ViewWithTableView : UIViewController
    <UITableViewDelegate, UITableViewDataSource> {
    IBOutlet UITableView *yourTableView;
    . . .
}

并保存,然后转到IB并右键单击tableView。单击并将DataSource和Delegate中的绑定拖动到viewController(可能是文件所有者)。然后单击viewController并键入cmd-4。在Class Identity部分的Class下拉菜单中选择“ViewWithTableView”或您调用的任何内容。保存所有内容,一切正常。

请注意,除非为tableView添加@property,否则不会调用self,因为没有访问者:

[yourTableView whatever:withWhatever];

与袖带上的任何代码一样,您的里程可能会有所不同。 :\

答案 1 :(得分:2)

感谢您的帮助。终于解决了,这就是问题:

1)我的控制器正在扩展UIViewController,而不是UITableViewController。

一旦我扩展了正确的类,然后通过文件所有者和IB正确连接,它就可以了。现在在viewWillAppear中我可以调用self.tableView reloadData。

再也不会犯这个错误了!

全部谢谢 -

SK

答案 2 :(得分:1)

您可以使用UIViewController - 您只需要实现UITableViewDelegate和UITableViewDataSource协议。

- R的

答案 3 :(得分:0)

视图中的

将出现方法(我假设在你的控制器类中)调用

[self.tableView reloadData];