天天看点

NavigationViewController 返回到根视图

(一)使用navigationviewcontroller进行页面跳转时,应该使用pushviewcontroller方法来跳转至下一页面,这样的话,下一页面同样在navigationviewcontroller容器中。

1、跳转到下一页面:

<code></code>

powerviewcontroller *power = [[powerviewcontroller

alloc] init];

<code>//所要跳转页面</code>powerviewcontroller中有个属性dictionary1是个nsmutabledictionary类型的容器

<code>[power.dictionary1 setobject:[self.outtxtpass text] forkey:alone_siteprize_pwd];</code>

<code>//使用pushviewcontroller跳转到下一页面</code>

<code>[self.navigationcontroller pushviewcontroller:power animated:</code><code>yes</code><code>];</code>

<a target="_blank" href="http://www.2cto.com/kf/201403/287433.html#">?</a>

2、从当前页面返回到上一页面并传值过去:

//此页面已经存在于self.navigationcontroller.viewcontrollers中,并且是当前页面的前一页面  

<code>powerviewcontroller *power = [self.navigationcontroller.viewcontrollers objectatindex:self.navigationcontroller.viewcontrollers.count-</code><code>2</code><code>];</code>

<code>//初始化其属性</code>

<code>power.dictionary = nil;</code>

<code>//传递参数过去</code>

<code>power.dictionary = [nsmutabledictionary dictionarywithdictionary:self.dictionary1];</code>

<code>//使用poptoviewcontroller返回并传值到上一页面</code>

<code>[self.navigationcontroller</code>poptoviewcontroller:power<code>animated:yes</code><code>];</code>

返回到上一页后,上一页面显示后要接收参数,并刷新。注意此时应该在viewdidappear中进行判断并接收传递的值:

<code>-(</code><code>void</code><code>)viewdidappear:(bool)animated</code>

<code>{</code>

<code>  </code><code>//判断并接收返回的参数</code>

<code>}</code>

3、从当前页面返回到上一页面(无需传值)的方法:

<code>//返回到上一界面</code>

<code>-(ibaction)backoff:(id)sender</code>

<code>    </code><code>[self.navigationcontroller popviewcontrolleranimated:</code><code>true</code><code>];</code>

(二)关于ios中 viewcontroller的跳转问题,其中有一种方式是采用navigationcontroller pushviewcontroller 的方法,比如我从主页面跳转到了一级页面,又从一级页面跳转到了二级页面,然后从二级页面跳转到了三级页面,依次类推。如果一级一级的返回我知道是没有问题的,调用navigationcontroller popviewcontrolleranimated就行了。但是某些情况下我可能想要马上回到主页面,而不是一级一级的返回(如果有很多层会很累的),那该怎么办呢?

1.返回根页面vc用 

[self.navigationcontroller poptorootviewcontroller]

2.返回根页面vc用 :

[self.navigationcontroller poptoviewcontroller:[self.navigationcontroller.viewcontrollers

objectatindex:2] animated:yes];

或(通过class定位)

<code>for</code><code>(uiviewcontroller *controller in self.navigationcontroller.viewcontrollers) {</code>

<code>    </code><code>if</code><code>([controller iskindofclass:[targetcontroller</code><code>class</code><code>]]) {</code>

<code>        </code><code>[self.navigationcontroller poptoviewcontroller:controller animated:yes];</code>

<code>    </code><code>}</code>