标签: uiviewcontroller

将数据传递回上一个viewcontroller

我正在尝试将数据传递回以前的viewController.

有谁知道如何将数据从ViewController B传递回ViewController A?所以我想要一个字符串'从'BIDAddTypeOfDealViewController转到BIDDCCreateViewController.用户编辑了viewController B,我想在ViewController A中返回已编辑的数据然后我使用它.

我正在使用此答案的"传递数据"部分.我的不同之处:第3点和第6点只是在弹出视图时提及,所以我将该代码放在viewWillDisappear中.我认为这是正确的吗?同样在Point 6,我没有使用nib进行初始化,因为它已经过时了.我正在使用故事板.而且我没有添加最后一行,因为我不相信我会推动它.按我的故事板上的按钮已经让我前进了.

我认为问题可能出现在BIDDCCreateViewController中,我有方法,但我无法运行它.要运行一个方法,它应该[自我方法].我无法做到这一点.那就是我猜的.

它编译并运行良好,没有任何记录,所以我不知道它是否有效.

更新:我无法获得'sendDataToA'方法来执行.

#import <UIKit/UIKit.h>
#import "BIDAddTypeOfDealViewController.h"

 @interface BIDDCCreateViewController : UIViewController
 @property (strong, nonatomic) NSString *placeId;
- (IBAction)gotoBViewController:(id)sender;
@end


#import "BIDDCCreateViewController.h"
#import "BIDAddTypeOfDealViewController.h"

@implementation BIDDCCreateViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSLog(@"SUCCESSFULLY PASSED PLACE ID: %@", self.placeId);
}

-(void)sendDataToA:(NSString *)myStringData
{

    NSLog(@"Inside sendDataToA");
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Your string Data Showing" message:myStringData delegate:self cancelButtonTitle:@"Ok " otherButtonTitles:nil];
    [alert show];
}

- (IBAction)gotoBViewController:(id)sender …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiviewcontroller ios

53
推荐指数
3
解决办法
6万
查看次数

View Controller:如何以编程方式在视图之间切换?

简而言之:我希望有两个全屏视图,我可以在视图A和视图B之间切换.我知道我可以使用标签栏控制器,但我不想这样做.我想看看这是如何手工完成的,以了解幕后发生的事情.

我有一个充当根控制器的UIViewController:

@interface MyRootController : UIViewController {
    IBOutlet UIView *contentView;
}
@property(nonatomic, retain) UIView *contentView;

@end
Run Code Online (Sandbox Code Playgroud)

contentView连接到UIView,我将其作为子视图添加到Nib的"视图"中.这有绿色,我看到它全屏.工作良好.

然后,我以几乎相同的方式创建了另外两个View Controller.ViewControllerA和ViewControllerB.ViewControllerA有蓝色背景,ViewControllerB有黑色背景.只是看看哪一个是活跃的.

所以,在myRootController的实现中,我这样做:

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    ViewControllerA *vcA = [[ViewControllerA alloc] initWithNib];
    [self.contentView addSubview:vcA.view];

    [cvA release];
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,-initWithNib方法如下所示:

- (id)initWithNib { // Load the view nib
    if (self = [super initWithNibName:@"ViewA" bundle:nil]) {
        // do ivar initialization here, if needed
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

这样可行.当我启动应用程序时,我会看到ViewControllerA中的视图.但现在最大的问题是:View Controller通常具有以下所有方法: …

iphone uitabbarcontroller uiviewcontroller uikit

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

来自AppDelegate的当前视图控制器?

有没有办法从AppDelegate获取当前视图控制器?我知道有rootViewController,但这不是我想要的.

objective-c uiviewcontroller ios

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

如何强制UIView的layoutSubviews.

我有一个自定义的UIView,它有一个专用的,手动设置的纵向和横向框架,因为autoresizingMasks在我的情况下不起作用.

我将此框架设置为:

 - (void)viewWillAppear:(BOOL)animated
Run Code Online (Sandbox Code Playgroud)

它按预期工作.

我现在的问题是,我的UIView还有子视图,也有专门的肖像/风景位置.

我将这些子视图放在:

- (void)layoutSubviews
Run Code Online (Sandbox Code Playgroud)

如果我现在离开我在的viewController 纵向,旋转到另一个的viewController横向的,然后回来这个的viewController我看到我的观点得到了正确的调整,但我的观点的子视图,其中获得定位在layoutSubviews不重新定位还没有,但在视图已经出现后以动画方式调整大小.

我在viewDidAppear中什么也没做,我已经尝试过调用了

 - (void)layoutIfNeeded
Run Code Online (Sandbox Code Playgroud)

以及:

 - (void)setNeedsLayout
Run Code Online (Sandbox Code Playgroud)

在viewWillAppear中,但它似乎没有任何改变.

我有什么想法我做错了吗?

谢谢.

iphone uiviewcontroller uiview ios layoutsubviews

50
推荐指数
3
解决办法
5万
查看次数

viewController与storyboard的自定义init方法

我无法覆盖我的Storyboard中设计的CustomViewController的初始化方法.

现在我正在做(在我的mainViewController中):

self.customViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomVC"];
self.customViewController.myObject = someObject;
Run Code Online (Sandbox Code Playgroud)

我在viewDidLoad(CustomViewController)

    [self.label setText:self.myObject.someString];
Run Code Online (Sandbox Code Playgroud)

这没问题.

但是,这是正确的方法吗?我应该在CustomViewController中添加自定义init方法(或覆盖)吗?像initWithObject:?我不知道如何调用我的自定义init方法UIStoryboard instantiateViewControllerWithIdentifier:,而不是调用init也不是initWithNibName.

也许我应该使用:- (id)initWithCoder:(NSCoder *)decoder.

请给我一些建议!

谢谢!

uiviewcontroller ios5 uistoryboard

50
推荐指数
1
解决办法
3万
查看次数

Xcode/iOS5:键盘出现时向上移动UIView

当键盘显示时,我想提升视野.键盘(高度:216)应该用它的高度向上推动我的视线.这可以通过简单的代码实现吗?

iphone keyboard uiviewcontroller ios ios5

49
推荐指数
5
解决办法
6万
查看次数

禁用iOS 13中呈现的视图控制器的交互式解雇

iOS 13为模态呈现的视图控制器引入了modalPresentationStyle .pageSheet(及其兄弟姐妹.formSheet)的新设计…

iOS 13中的新滑动模态演示

…我们可以通过向下滑动显示的视图控制器来消除这些页面(交互式消除。尽管新的“拉动关闭”功能非常有用,但可能并不总是令人满意。

问题:我们如何关闭交互式解雇? -请记住,我们保持演示文稿样式不变。

uiviewcontroller uikit modalviewcontroller ios ios13

49
推荐指数
5
解决办法
1万
查看次数

xcode storyboard容器视图 - 如何访问viewcontroller

我正在尝试使用故事板并让事情正常运行.我已经在我现有的一个视图中添加了一个Container View.当我尝试在我的视图控制器.h文件(ctrl-drag)中添加对此的引用时,我得到了一个IBOutlet UIView *containerView.如何获取对容器视图的视图控制器的引用?我需要容器视图控制器,所以我可以将它的委托设置到我的视图控制器,这样他们就可以相互"交谈".

我将故事板设置为:

在此输入图像描述

它在我的.h文件中引用为:

在此输入图像描述

请注意.h中的是UIView,而不是我的视图的InstallViewController.如何添加对视图控制器的引用?我需要能够设置其委托.

xcode objective-c uiviewcontroller ios container-view

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

如何在Swift中编写UIViewController的init方法

我无法将init方法添加到以下UIViewController类.我需要在init方法中编写一些代码.我必须编写init(编码器)方法吗?即使我添加编码器和解码器方法,我仍然会遇到错误.我也尝试使用没有任何参数的init方法,但这似乎也不起作用.

class ViewController: UIViewController {

    var tap: UITapGestureRecognizer?

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)   {
        super.init(nibName: nil, bundle: nil)
        tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
    }

...
...
}
Run Code Online (Sandbox Code Playgroud)

如果我调用不带参数的super.init()方法,则错误为"必须调用超类的指定初始化程序",如果我传递参数nib和bundle,则错误为"必需的初始化程序初始化程序(编码器)".

即使我添加init(编码器)和init(解码器)它也不起作用.

uiviewcontroller uikit designated-initializer ios swift

48
推荐指数
5
解决办法
7万
查看次数

单个函数来关闭所有打开的视图控制器

我有一个应用程序,它是一个单一的视图应用程序 我有一个导航控制器链接到根视图控制器中的所有子控制器.

在每个子控制器中,我都有一个注销按钮.我想知道我是否可以使用一个可以调用的功能,这将解除所有已经打开的控制器,无论当用户按下注销时哪个控制器当前打开?

我的基本开始:

func tryLogout(){
     self.dismissViewControllerAnimated(true, completion: nil)
     let navigationController = UINavigationController(rootViewController: UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("LoginViewController") )
     self.presentViewController(navigationController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找执行此任务的最有效的内存方式.我将我的注销函数放在一个单独的utils文件中,但是我不能使用self.而且我仍然知道要动态解除哪些控制器的问题.

已建议更新 Pop到根视图控制器.所以我的尝试是这样的:

func tryLogout(ViewController : UIViewController){
     print("do something")
     dispatch_async(dispatch_get_main_queue(), {
         ViewController.navigationController?.popToRootViewControllerAnimated(true)
         return
     })
 }
Run Code Online (Sandbox Code Playgroud)

这是实现我追求目标的最佳途径吗?

uiviewcontroller dismiss ios swift

48
推荐指数
6
解决办法
6万
查看次数