使用另一个ViewController覆盖VIewController(无动画或转换)

时间:2016-09-20 13:23:32

标签: ios uiviewcontroller swift3

之前可能会问这个问题,但我找不到任何相关的问题,这就是为什么要发布新的

所以我有3个标签,在tab3中我有用户个人资料标签 在tab3中我想显示loginViewController(如果用户尚未登录)否则我想显示默认配置文件选项卡

我可以使用OperationContract()] [WebInvoke(BodyStyle = WebMessageBodyStyle.Bare, Method = "POST", ResponseFormat = WebMessageFormat.Json, UriTemplate = "SaveFileAndData")] void SaveFileAndData(); public void SaveFileAndData() { string ext1 = ""; string ext2 = ""; string filename1 = ""; string filename2 = ""; long id = 0; if (HttpContext.Current.Request.Form["id"] != null && HttpContext.Current.Request.Form["id"].ToString().Trim() != "") id = Int64.Parse(HttpContext.Current.Request.Form["id"].Trim()); int cid = 0; if (HttpContext.Current.Request.Form["cid"] != null && HttpContext.Current.Request.Form["cid"].ToString().Trim() != "") cid = Int32.Parse(HttpContext.Current.Request.Form["cid"].Trim()); HttpContext context = HttpContext.Current; if (context != null) { if (context.Request.Files.Count >= 1) { HttpPostedFile file1 = HttpContext.Current.Request.Files["image1"]; if (file1 != null) { ext1 = System.IO.Path.GetExtension(file1.FileName); filename1 = custregid + ext1; if (((ext1.ToLower() != ".jpg") & (ext1.ToLower() != ".jpeg") & (ext1.ToLower() != ".gif") & (ext1.ToLower() != ".png") & (ext1.ToLower() != ".bmp"))) { // Perform some operation } } HttpPostedFile file2 = HttpContext.Current.Request.Files["image2"]; if (file2 != null) { ext2 = System.IO.Path.GetExtension(file2.FileName); filename2 = custregid + ext2; if (((ext2.ToLower() != ".jpg") & (ext2.ToLower() != ".jpeg") & (ext2.ToLower() != ".gif") & (ext2.ToLower() != ".png") & (ext2.ToLower() != ".bmp"))) { // Perform some operation } } } } } protected void btnDoSomeThing_OnClick(object sender, EventArgs e) { try { long id = 1; long cid = 1; string key = "key"; WebRequest webrequest1 = WebRequest.Create("http://localhost:65010/API/Service.svc/SaveFileAndData"); webrequest1.Method = "POST"; webrequest1.Headers.Add("key", key); string postData = ""; postData = "id=" + id + "&cid=" +cid; byte[] byteArray = Encoding.UTF8.GetBytes(postData); webrequest1.ContentType = "application/x-www-form-urlencoded"; webrequest1.ContentLength = byteArray.Length; Stream dataStream = webrequest1.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); // Get the response. WebResponse webresponse = webrequest1.GetResponse(); Stream strresponse = webresponse.GetResponseStream(); StreamReader strreader = new StreamReader(strresponse); string responseFromServer = strreader.ReadToEnd(); webresponse.Close(); strresponse.Close(); strreader.Close(); } catch (Exception ex) { throw ex; } } 传递一个segue,或者像这样呈现一个视图控制器:

performSegue

但我不想那样, 如果用户尚未登录没有任何动画或过渡,我想在默认VC的位置显示不同的VC

e.g。

producthunt的iOS应用

如果用户未登录

enter image description here

如果他确实已登录:

enter image description here

看到他们没有将它呈现为弹出或模态的第一张图像。 看起来他们是在同一个VIewController上做的,但我不确定。任何人都可以在这里指导我吗?

1 个答案:

答案 0 :(得分:0)

用所需的ViewController替换当前的ViewController完成了这项工作

    let loginPageView =  self.storyboard?.instantiateViewController(withIdentifier: "LoginVC") as! SignupViewController
    var VCs =  self.navigationController?.viewControllers

    VCs?.removeLast() // here i removed the current VC

    VCs?.append(loginPageView) after that added the desired VC

    self.navigationController?.setViewControllers(VCs!, animated: false) // here i'm setting the viewcontrollers  with any animation.