推送新控制器并再次返回导航控制器后,iOS View Controller属性消失

时间:2012-04-17 14:27:48

标签: objective-c ios

我无法找到解决此问题的任何主题,所以这就是我在这里问你的原因。

如果有人可以帮助我,我会很高兴。

我有一个导航控制器,我正在将TableViewController推入其中。我的问题是,当我单击“返回”按钮时,我之前的tableViewcontroller会显示以前的数据,但dataArray属性(我的表的数据源)是空的。

我的代码:

  @interface patientViewControllerSearch : UIViewController <UITableViewDelegate, UITableViewDataSource, ASIHTTPRequestDelegate>
{
    NSMutableArray *dataArray;
    NSMutableArray *letters;

    UITableView *tableView;
    IBOutlet UISearchBar *searchBar;
}

@property (nonatomic, retain) IBOutlet UITableView *tableView;
@property (nonatomic, retain) esTabBarController *esTabBarController;
@property (nonatomic, retain) UISearchBar *searchBar;

在我的patientViewControllerSearch中我在ViewDidLoad中执行:

dataArray = [[NSMutableArray alloc] init];    
letters = [[NSMutableArray alloc] init];

通过HTTP请求,我填充了我的数组。

这很好。

后:

[self.navigationController pushViewController:controller                                         animated:YES];

当我回来时,(viewDidload没有再次加载,这就是为什么没有填写dataArray的新请求)dataArray,而且一切都是空的。 tableView显示了我之前的状态,但刷新后也消失了。

你有什么建议吗?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

“viewDidLoad”没有被调用的原因是因为它第一次出现在你的应用程序中时已经加载了(我假设在启动时)。

您会注意到视图在您的应用程序中显示之前/之后将始终调用“viewWillAppear”和“viewDidAppear”。

如果要在向用户显示视图时更新数据,这些将是您使用的适当方法。