如何不覆盖原先的 自定义alertview 界面Controller界面

Pages: 1/2
主题 : 新手问个问题,pop之后如何销毁原来的ViewController
级别: 骑士
UID: 516487
可可豆: 918 CB
威望: 913 点
在线时间: 1126(时)
发自: Web Page
来源于&&分类
新手问个问题,pop之后如何销毁原来的ViewController&&&
比如说:我从Apush到B然后Bpop回A之后销毁B
级别: 侠客
UID: 372008
可可豆: 336 CB
威望: 317 点
在线时间: 1000(时)
发自: Web Page
arc不需要你来管
级别: 骑士
UID: 516487
可可豆: 918 CB
威望: 913 点
在线时间: 1126(时)
发自: Web Page
回 1楼(一条大菜狗) 的帖子
我在push回去的时候,有个属性不能用了,无法被赋值。
级别: 新手上路
UID: 491238
可可豆: 41 CB
威望: 37 点
在线时间: 61(时)
发自: Web Page
回 2楼(明夕何夕) 的帖子
为什么回去还要用push?&&用pop啊
级别: 侠客
UID: 199061
可可豆: 474 CB
威望: 245 点
在线时间: 259(时)
发自: Web Page
push 采用压栈的方式,pop出去就自动从栈种移除了。&& 你可以在dealloc里面做具体处理
级别: 新手上路
可可豆: 62 CB
威望: 62 点
在线时间: 176(时)
发自: Web Page
从A到B push 回来pop&& 把值带回来的话就是从后往前传了(可以通过代理,传对象)
级别: 精灵王
UID: 34556
发帖: 1379
可可豆: 1116 CB
威望: 2182 点
在线时间: 1802(时)
发自: Web Page
不用 arc 也 不需要你管&&pop 完 直接就走 dealloc
级别: 新手上路
UID: 518506
可可豆: 10 CB
威望: 7 点
在线时间: 48(时)
发自: Web Page
不会立即释放的。
级别: 新手上路
UID: 552504
可可豆: 132 CB
威望: 105 点
在线时间: 66(时)
发自: Web Page
回 4楼(if2012go) 的帖子
大神,我想问一下present到下一个Viewcontroller的时候,如何把上一个ViewController销毁掉,从栈区直接干掉不要了
级别: 新手上路
UID: 457866
可可豆: 103 CB
威望: 83 点
在线时间: 1070(时)
发自: Web Page
会自己释放
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版用Swift完成不同View Controller之间的切换
之前用objective-c开发时,页面之间的切换很容易。其实用swift没有很大的变化,如果你是用storyboard完成的界面,基本上是同样的方式,只不过在代码部分写成swift风格的就行了。
今天在实验开发一个简单的小程序时,却遇到了一些bug,后来还是求助stackoverflow上的大神解决了问题,在此做下记录。
我的程序结构是这样的,在一个页面A中有个按钮,然后点击按钮以后,切换到另一个页面B。A和B都在同一个storyboard中。
这里先说下通用的方法:
手动用代码建好的view controller,即不是在storyboard中建立的:
= ViewController()
self.presentViewController(vc, animated: true, completion: nil)
在storyboard中建立的可以用下面的代码:
let sb = UIStoryboard(name:"Main", bundle: nil)
let vc = sb.instantiateViewControllerWithIdentifier("tabBarController") as ViewController
self.presentViewController(vc, animated: true, completion: nil)
这里的tabBarController 是你在storyboard中对相应的viewcontroller打开其identifier inspector,然后对其storyboard ID起的名字。
所以我的程序就是,在A的类中,定义下面的button action:
@IBAction func login(sender: UIButton) {
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateViewControllerWithIdentifier("tabBarController") as UITabBarController
self.presentViewController(vc, animated: true, completion: nil)
}注意我这里as后并没有写成ViewController,bug就出现在这里。当我最初写的是viewController时,总会出bug,提示这样:
我Google了关于dynamic Cast Class Unconditional也没有找到太多有用的信息,没有办法只有求助stackoverflow的大神了,很快就有人回复:
原来是因为我从storyboard读到的被命名为tabBarController的控件不能被强制转换(as)成viewcontroller,因为它其实是一个UITabBarController,也就是说,as后面你想要强制转换成的一定要与storyboard中的保持一致。
所以,代码就那么几行,但是不能生搬硬套。
如果你的storyboard中是viewcontroller,就as成viewcontroller,如果是UITabBarController就as成为UITabBarController,如果是其它的诸如UITableViewController,你知道怎么做。请问MVC中能否只设计一个虚拟controller来应对多个页面View?
[问题点数:40分,结帖人u]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:95
本版专家分:1908
本版专家分:0
本版专家分:399029
2014年 荣获名人称号2013年 荣获名人称号2012年 荣获名人称号
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第四
本版专家分:247
本版专家分:1098
本版专家分:6232
匿名用户不能发表回复!
其他相关推荐如何不覆盖原先的 viewController界面_百度知道
如何不覆盖原先的 viewController界面
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自知道合伙人认证行家
互联网类行家
采纳数:29699
获赞数:34124
好口子网创始人,互联网运营专家,工商顾问专家,财税顾问专家,今日头条、搜狐、网易合约作者。
下面是跳转的代码- ( IBAction )presentViewController:( id )sender{if ( self . background ){[ self . view bringSubviewToFront : self . background ];self . background . hidden = NO ;self . background . layer . opacity = 0.3 ;}UINavigationController *navi = [ self . storyboardinstantiateViewControllerWithIdentifier : @&ToViewControllerNavi& ];ToViewController *toViewController = navi. viewControllers [ 0 ];[toViewController setHandler :^(){self . background . hidden = YES ;}];if ([[[ UIDevice currentDevice ] systemVersion ] floatValue ] & 8.0 ){[navi setTransitioningDelegate : self . transDelegate ];navi. modalPresentationStyle = UIModalPresentationC[ self presentViewController :navi animated : YES completion : nil ];}else{toViewController. view . backgroundColor = [ UIColor clearColor ];navi. modalPresentationStyle = UIModalPresentationOverCurrentC[ self presentViewController :navi animated : YES completion : nil ];}}
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。15:15 提问
ios swift 多个界面,viewcontroller应该怎么写呢?
ios swift 多个界面,viewcontroller应该怎么写呢?或者说怎么控制?不用storyboard
按赞数排序
你是说不同界面的跳转吗?
跳转可以这样写
let viewCro = ViewController.init()
// 假如用xib的话,用下面这句初始化
let viewCro = ViewController.init(nibName:nibName, bundle:bundle)
if (self.navigationController != nil) {
self.navigationController!.pushViewController(viewCro, animated: true)
self.presentViewController(viewCro, animated: true, completion: nil)
虽然相隔那么长的时间了,自己也在学习,在说也有很多新手在学习,希望这个代码能帮助学习
在AppDelegate文件下面的 application 方法加上这个代码
//创建window
var window: UIWindow?
window = UIWindow(frame: UIScreen.mainScreen().bounds);
window?.backgroundColor = UIColor.whiteColor();
let mainTabController = MainViewController()
window?.rootViewController = mainTabC
//显示窗口
window?.makeKeyAndVisible();
return true
---------------------------
新建一个文件名为MainViewController .swift 文件
import UIKit
class MainViewController: UITabBarController {
override func loadView() {
super.loadView();
addChildViewControllers();
func addChildViewControllers() {
addChildNavAndTabBar("CartTableViewController",title: "购物车",imageName: "tabbar_cart");
addChildNavAndTabBar("MemberController",title: "我",imageName: "tabbar_fans");
初始化子控制器
:param: childControllerName 需要初始化的子控制器
:param: title
初始化的标题
:param: imageName
初始化的图片
func addChildNavAndTabBar(childControllerName: String,title:String,imageName:String) {
//动态获取命名空间
let namespace = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as! S
let cls:AnyClass = NSClassFromString(namespace + "." + childControllerName)!;
// 告诉编译器真实类型是UIViewController
let vcCls = cls as! UIViewController.T
let vc = vcCls.init();
let titleDict: NSDictionary = [NSForegroundColorAttributeName: UIColor(red: 255/255, green: 105/200, blue: 0.0/255, alpha: 1.0)]
//创建底部导航
vc.title =
vc.tabBarItem.setTitleTextAttributes(titleDict as? [String : AnyObject], forState: UIControlState.Highlighted)
vc.tabBarItem.image = UIImage(named: imageName);
vc.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted");
// 创建导航控制器
let nav = UINavigationController()
nav.addChildViewController(vc)
addChildViewController(nav)
不是跳转,是多个界面,不用storyboard怎么生成?
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐}

我要回帖

更多关于 ios刷新当前界面view 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信