所以我在一个视图中有两个搜索栏,一些按钮和一个tableView下面的那些(是的,所有这些)。我的顶部还有一个带有后退按钮的导航栏。
对于特定操作,我删除了所有搜索栏,按钮,并且在我的视图中只显示了一个uitableviewcell。
如果我按下编辑,我希望重新加载整个视图,而不仅仅是tableView,但我希望视图有搜索栏和按钮以及导航屏幕。
我在[self.view reloadInputViews]
按钮的IBAction中做了edit
。控制在这里,但视图没有重新加载。为什么呢?
答案 0 :(得分:1)
reloadInputViews专门用于firstResponders的视图。可能self.view不是当时的第一个响应者。但是为什么要使用“reloadInputViews”来完成所有这些,使用它会更容易:[self.view setNeedsLayout]?
答案 1 :(得分:0)
处理刷新视图状态的更好方法是将UIViewController视图的子视图的配置抽象为最初可以从viewDidLoad
调用的自定义方法,并再次作为{{1}的操作}。
UIbarButtonItem
值得区分的原因是因为在延迟加载视图后系统会自动调用- (void)viewDidLoad {
//Specific, non repeated view setup
[self resetViewState];
}
- (void)resetViewState {
//Repeatable view setup
}
。按照设计,它不是每个视图应该多次调用的方法。如果视图被丢弃并重新创建,它将再次被调用。
如果您需要进行布局工作,您还可以将UIViewController子视图的布局移动到viewDidLoad
,系统会在不同时间调用它。
答案 2 :(得分:-1)
我不知道如何在StackOverflow上发布后立即得到答案。对不起麻烦的家伙(感叹!)
我做了[self viewDidLoad];