Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 重新加载ViewController_Ios_Objective C_Uiviewcontroller - Fatal编程技术网

Ios 重新加载ViewController

Ios 重新加载ViewController,ios,objective-c,uiviewcontroller,Ios,Objective C,Uiviewcontroller,我想在iOS应用程序中重新加载ViewController。我做了一些研究,答案总是[self-viewdidload]或setNeedsDisplay()但在我的情况下,我需要重新加载所有内容(init、loadView和viewDidLoad) 我编写了一个重载函数: - (void)reload{ [self init]; [self loadView]; [self viewDidLoad]; } 但我得到了一个警告 “表达式结果未使用” 。这是可行的,但我认

我想在iOS应用程序中重新加载
ViewController
。我做了一些研究,答案总是
[self-viewdidload]
setNeedsDisplay()但在我的情况下,我需要重新加载所有内容(init、loadView和viewDidLoad)

我编写了一个重载函数:

- (void)reload{
    [self init];
    [self loadView];
    [self viewDidLoad];
} 
但我得到了一个警告

“表达式结果未使用”

。这是可行的,但我认为这不是正确的做法。有什么建议吗

这是我的视图控制器的代码:

-(id) init {

    switch (_route) {

        case ROUTE_GPS:
            baseController = [[GpsController alloc] init];
            _key = KEY_GPS;
            break;

        case ROUTE_TEST:
            baseController = [[TestController alloc] init];
            _key = KEY_TEST;
            break;

        default:
            break;
    }

    return [super init];
}

-(void) loadView {
    [super loadView];
    [baseController initView:self];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(update:) name:_key object:nil];
}
根据需要,您应该永远不要调用loadView方法

永远不要直接调用此方法。视图控制器调用 此方法在请求其view属性但当前为nil时使用。 此方法加载或创建视图并将其指定给视图 财产

根据需要,您应该永远不要调用loadView方法

永远不要直接调用此方法。视图控制器调用 此方法在请求其view属性但当前为nil时使用。 此方法加载或创建视图并将其指定给视图 财产


也许你可以试试这样的东西:

-(void)viewDidLoad
{
    [super viewDidLoad];
    [self configureView];
}

-(void)reloadView
{
    [self configureView];
}

-(void)configureView
{
    variable1 = something;
    variable2 = somethingElse;
}

-(void)atSomeOtherPointInTime
{
    [self reloadView];
}

您不应该自己调用视图控制器的生命周期函数,如
viewDidLoad
viewwillbeen
等。

也许您可以尝试以下方法:

-(void)viewDidLoad
{
    [super viewDidLoad];
    [self configureView];
}

-(void)reloadView
{
    [self configureView];
}

-(void)configureView
{
    variable1 = something;
    variable2 = somethingElse;
}

-(void)atSomeOtherPointInTime
{
    [self reloadView];
}

您不应该自己调用视图控制器的生命周期函数,如
viewDidLoad
viewwillbeen
等。

是的,这样做是不对的。我给了你一个想法,比如你可以在scrollview上使用scrollview,然后在scrollview上使用refreshcontrol,这样,当调用refreshcontrol的方法时,你也可以在该方法中重新加载视图。问题是我不想只重新加载视图。我想重新加载init函数中存在的所有变量。你可以重新加载任何东西或任何方法,或者当你想在该方法中更新时,仍然我不想使用scrollviewok,那是你的选择。是的,这样做是不对的。我给了你一个想法,比如你可以在scrollview上使用scrollview,然后在scrollview上使用refreshcontrol,这样,当调用refreshcontrol的方法时,你也可以在该方法中重新加载视图。问题是我不想只重新加载视图。我想重新加载init函数中存在的所有变量你可以重新加载任何东西或任何方法,或者当你想在该方法中更新时仍然我不想使用scrollviewok,那是你的选择。是的,但我需要像Android中的startActivity这样的东西,您可以创建父视图控制器并添加要作为父视图控制器的子视图控制器重新加载的视图控制器。是的,但我需要类似于Android中的startActivity的内容。在这种情况下,您可以创建父视图控制器并添加要作为父视图控制器的子视图控制器重新加载的视图控制器。