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。
感觉很脏但是完成了工作。“
如果这是答案,我不确定如何编码。
非常感谢!
注意:我刚试过这个:
·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];
但这似乎不起作用。
答案 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];