日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS Storyboard unwind segues使用小结

發(fā)布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS Storyboard unwind segues使用小结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用storyboard開發(fā)的時候,經(jīng)常會在一個scene上添加一個button,再拖拽這個button到某個想要關(guān)聯(lián)的頁面,最后選擇push的方式跳轉(zhuǎn)。這樣scene_A和scene_B就有了一個“順序”的跳轉(zhuǎn)方式了。但有時,希望可以從scene_B觸發(fā)某個action,跳轉(zhuǎn)回scene_A。如果還采用剛才的方式,就會有問題。因為,跳回的那個scene_a已經(jīng)不是原來的那個scene_A了。這就需要使用到storyboard的unwind segue了。寫個demo小總結(jié)一下:

創(chuàng)建如下圖所示的storyboard。 RedViewController push到 YellowViewController, YellowViewController push到BlueViewController, BlueViewController modal到?GreenViewController。從YellowViewController可以返回RedViewController,從BlueViewController可以返回YellowViewController和RedViewController。當(dāng)然,從GreenViewController也是可以返回到BlueViewController的。

回到代碼部分。因為使用了storyboard,push、model的跳轉(zhuǎn)都省去了寫代碼,同理,“返回”的跳轉(zhuǎn)也是省去了代碼的。

RedViewController.m中

?

- (IBAction)unwindSegueToRedViewController:(UIStoryboardSegue *)segue {

?? ?

}

需要注意的是這個方法的返回值必須是ibaction,參數(shù)必須是uistoryboardsegue。至于為什么,后面的代碼會有體現(xiàn)。

回到storyboard文件,觀察到RedViewController的scene下方有個綠色的按鈕(不是因為寫了上面的代碼才出現(xiàn)綠色按鈕,而是一直都存在的)。



接下來,右鍵exit按鈕(綠色按鈕),就會出現(xiàn)剛才寫的方法unwindseguetoredviewcontroller:


選中這個方法,拖拽至YellowViewController的back redvc按鈕。


放手之后,會在back redvc附近出現(xiàn)一個action的提示,選中。這樣,當(dāng)點(diǎn)擊yellowviewcontroller的back red vc按鈕之后,就會跳回red?view controller。編譯一下,取保沒有問題。運(yùn)行程序。

需要的說明:

1.如果你像從yellowviewcontroller返回到redviewcontroller,那么unwind segue關(guān)聯(lián)的方法必須要再redviewcontroller中寫明,即此例子中的-(inaction)unwindtoredviewcontroller:(uistoryboardsegue *)segue;注意參數(shù)和返回指,方法名任意。

2.是右鍵redviewcontroller的exit按鈕(綠色按鈕)出現(xiàn)unwind segue可以關(guān)聯(lián)的方法,然后去關(guān)聯(lián)yellowviewcontroller的button。


同理,可以做BlueViewController返回到Y(jié)ellowViewController的實現(xiàn)。

在YellowViewoController.m中

?

- (IBAction)unwindToYellowViewController:(UIStoryboardSegue *)segue {

?? ?

}

右鍵yellowviewcontroller的exit按鈕,關(guān)聯(lián)blueviewcontroler的back yellowvc 按鈕。

還需要實現(xiàn)從blueviewcontroller直接返回到redviewcontroller中,選中redviewcontroller的exit按鈕,選擇unwindtoredviewcontroller關(guān)聯(lián)blueviewcontroller上的按鈕。

編譯一下,沒有任何問題,運(yùn)行程序,感受一下。

從YellowViewController和BlueViewController都可以返回到RedViewController,此時需要做一個判斷,看看到底是從哪里返回的。

?

  • -?(IBAction)unwindSegueToRedViewController:(UIStoryboardSegue?*)segue?{??
  • ??????
  • ????UIViewController?*sourceViewController?=?segue.sourceViewController;??
  • ??????
  • ????if?([sourceViewController?isKindOfClass:[YellowViewController?class]])?{??
  • ????????NSLog(@"from?yellow?vc");??
  • ????}??
  • ????else?if?([sourceViewController?isKindOfClass:[BlueViewController?class]])?{??
  • ????????NSLog(@"from?blue?vc");??
  • ????}??
  • }??

  • 這也是為什么方法的參數(shù)是segue的原因,通過segue可以拿到source?view controller(源視圖控制器)。

    ?

    嘗試push之后,modal也是同樣的道理,用modal模式從blueviewcontroller展示greenviewcontroller。

    要想返回,需要在blueviewcontroller中寫關(guān)聯(lián)unwind segue的方法:

    ?

    - (IBAction)unwindToBlueViewController:(UIStoryboardSegue *)segue {

    ?? ?

    }

    關(guān)聯(lián)unwindtoblueviewcontroller方法到相應(yīng)的button上。

    至此,使用storyboard“返回”就告一段落了,大多數(shù)時間,花銷在拖拽控件上,根本沒有寫相關(guān)pop dismiss方法。這也是storyboard的一大優(yōu)勢。

    是不是也可以用代碼實現(xiàn)呢?可以的。

    在storyboard中選中GreenViewController scene,在左側(cè)可以看到unwind segue的表示,有點(diǎn)像DNA序列是的,選中之后,定義它的唯一表示為greenUnwind

    在greenviewcontroller.m中

    back code按鈕關(guān)聯(lián)的方法:

    ?

  • -(IBAction)backCodeBtnTapped:(id)sender?{??
  • ??
  • ????[self?performSegueWithIdentifier:@"greenUnwind"?sender:self];??
  • }?
  • 編譯一下,沒有任何錯誤,運(yùn)程程序。


    轉(zhuǎn)載于:https://www.cnblogs.com/melons/p/5792019.html

    《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的iOS Storyboard unwind segues使用小结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。