标签: uiviewcontroller

dismissModalViewController并传回数据

我有两个视图控制器,firstViewControllersecondViewController.我正在使用此代码切换到我的secondViewController(我也传递一个字符串):

secondViewController *second = [[secondViewController alloc] initWithNibName:nil bundle:nil];

second.myString = @"This text is passed from firstViewController!";

second.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

[self presentModalViewController:second animated:YES];

[second release];
Run Code Online (Sandbox Code Playgroud)

然后我在secondViewController中使用此代码切换回firstViewController:

[self dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

所有这一切都很好.我的问题是,如何将数据传递给firstViewController?我想从secondViewController传递一个不同的字符串到firstViewController.

iphone uiviewcontroller modalviewcontroller ios

84
推荐指数
2
解决办法
3万
查看次数

从导航堆栈中删除viewcontrollers

我有一个导航堆栈,比如5个UIViewControllers.我想在第5个viewcontroller中单击按钮时删除堆栈中的第3个和第4个viewcontrollers.是否有可能做到这一点?如果是这样的话?

iphone uiviewcontroller uinavigationcontroller ios

84
推荐指数
9
解决办法
10万
查看次数

控制器中的UIView触摸事件

如何以编程方式添加UIView touchbegin动作或touchend动作,因为Xcode不是从Main.storyboard提供的?

uiviewcontroller uiview ios swift

84
推荐指数
9
解决办法
12万
查看次数

模态视图控制器 - 如何显示和关闭

关于如何通过显示和解除多个视图控制器解决问题,我在最后一周打破了我的头脑.我创建了一个示例项目并直接从项目中粘贴代码.我有3个视图控制器及其相应的.xib文件.MainViewController,VC1和VC2.我在主视图控制器上有两个按钮.

- (IBAction)VC1Pressed:(UIButton *)sender
{
    VC1 *vc1 = [[VC1 alloc] initWithNibName:@"VC1" bundle:nil];
    [vc1 setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [self presentViewController:vc1 animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

这打开VC1没有问题.在VC1中,我有另一个按钮,它应该打开VC2,同时解除VC1.

- (IBAction)buttonPressedFromVC1:(UIButton *)sender
{
    VC2 *vc2 = [[VC2 alloc] initWithNibName:@"VC2" bundle:nil];
    [vc2 setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [self presentViewController:vc2 animated:YES completion:nil];
    [self dismissViewControllerAnimated:YES completion:nil];
} // This shows a warning: Attempt to dismiss from view controller <VC1: 0x715e460> while a presentation or dismiss is in progress!


- (IBAction)buttonPressedFromVC2:(UIButton *)sender
{
    [self dismissViewControllerAnimated:YES completion:nil];
} // This is going back to VC1. 
Run Code Online (Sandbox Code Playgroud)

我希望它回到主视图控制器,同时VC1应该已经从内存中删除了.只有当我点击主控制器上的VC1按钮时才会显示VC1.

主视图控制器上的另一个按钮也应该能够直接绕过VC1显示VC2,并且当在VC2上单击按钮时应该返回到主控制器.没有长时间运行的代码,循环或任何计时器.只是裸骨调用来查看控制器.

objective-c uiviewcontroller ios presentviewcontroller dismissviewcontroller

81
推荐指数
4
解决办法
16万
查看次数

如何仅在Swift中将一个视图控制器的方向锁定为纵向模式

由于我的应用得到了所有方向的支持.我想只将肖像模式锁定到特定的UIViewController.

(例如,假设它是Tabbed应用程序,当SignIn View以模态方式出现时,我只想将SignIn View设置为纵向模式,无论用户如何旋转设备或当前设备方向如何)

portrait uiviewcontroller device-orientation swift

81
推荐指数
8
解决办法
8万
查看次数

如何使用presentModalViewController创建透明视图

我正在显示模态视图

[self presentModalViewController:controller animated:YES];
Run Code Online (Sandbox Code Playgroud)

当视图向上移动屏幕时,它根据创建的xib文件中的设置是透明的,但是一旦它填满屏幕就会变得不透明.

有没有保持视图透明?

我怀疑它被放置的视图没有被渲染,而是模态视图变得不透明.

iphone uiviewcontroller ios

80
推荐指数
10
解决办法
9万
查看次数

如何在Swift中为UIViewController子类创建自定义初始化程序?

如果之前有人问过这个问题,我已经进行过很多搜索,而且当事情不同时,很多答案来自早期的Swift测试版.我似乎无法找到明确的答案.

我想要子类UIViewController并拥有一个自定义初始化程序,以便我可以轻松地在代码中进行设置.我在Swift中遇到这个问题很困难.

我想要一个init()可以用来传递特定的函数,NSURL然后使用视图控制器.在我看来它看起来像init(withImageURL: NSURL).如果我添加该功能,则会要求我添加该init(coder: NSCoder)功能.

我相信这是因为它在超类中用required关键字标记?所以我必须在子类中做到这一点?我添加它:

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}
Run Code Online (Sandbox Code Playgroud)

怎么办?我的特殊初始化程序是否被认为是convenience一个?指定的一个?我打电话给超级初始化器吗?来自同一类的初始化器?

如何将我的特殊初始化程序添加到UIViewController子类中?

initialization uiviewcontroller swift

79
推荐指数
4
解决办法
5万
查看次数

如何识别导航堆栈中的先前视图控制器

我有两个单独的navigationcontrollers,一个与RootViewControllerA,另一个与RootViewControllerB.

我能够将ViewControllerC 推到A或B的导航堆栈上.

问题:当我在ViewControllerC中时,如何知道我是否在属于A或B的堆栈中?

objective-c uiviewcontroller uinavigationcontroller ios

78
推荐指数
7
解决办法
9万
查看次数

78
推荐指数
2
解决办法
2万
查看次数

Swift:自定义ViewController初始化程序

如何UIViewController在Swift中为子类添加自定义初始值设定项?

我创建了一个UIViewController看起来像这样的子类:

class MyViewController : UIViewController
{
    init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
    {
        self.leftVC = leftVC;
        self.rightVC = rightVC;
        self.gap = gap;

        super.init();

        setupScrollView();
        setupViewControllers();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到一个致命的错误:

致命错误:对类'MyApp.MyViewController'使用未实现的初始化程序'init(nibName:bundle :)'

我已经读过,在添加自定义初始化程序时,还必须覆盖,init(coder aDecoder:NSCoder)所以让我们覆盖它init,看看会发生什么:

override init(coder aDecoder: NSCoder)
{
    super.init(coder: aDecoder);
}
Run Code Online (Sandbox Code Playgroud)

如果我添加这个,Xcode会抱怨self.leftVC is not initialized at super.init call.所以我想这也不是解决方案.所以我想知道如何将自定义初始化器正确地添加到ViewControllerSwift中的子类中(因为在Objective-C中这看起来不是问题)?

initialization objective-c uiviewcontroller ios swift

78
推荐指数
4
解决办法
5万
查看次数