在Xcode中的UIviews之间切换

时间:2013-09-03 23:55:05

标签: ios uiview switch-statement toggle

我是xcode的新手,还在学习它的基础知识。如果我的问题太基础了,请耐心等待。

我有一个观点,这是我的主要观点。当用户单击按钮(选项按钮)时,我想转到第二个视图。在这里,用户可以从许多可用选项中选择一个

一旦用户选择了他的选项,我想将此值发送回第一个视图并从原来的位置继续处理(当用户点击选项按钮时)。

重要 - 用户将在处理过程中从view1移动到view2。我必须从view2返回到view1并从我离开的地方继续...这意味着,我需要所有变量值都可用。

3 个答案:

答案 0 :(得分:0)

轻松!您所要做的就是控制从UIButton到新视图的拖动。选择模态。

enter image description here

答案 1 :(得分:0)

听起来你需要实现一个委托。我不是最好的解释协议和代表,所以我会提供谈论它们的链接。我将在下面提供一个粗略的实现。

协议 https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html

代表 https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html#//apple_ref/doc/uid/TP40010810-CH11

两者之间的差异 Difference between protocol and delegates?

<强> View2.h

@protocol View2;

@interface View2 : UIViewController

@property (nonatomic, weak) id<View2Delegate> *delegate;

...

@end

@protocol View2Delegate

-(void)view2Finished:(NSString *)value;

@end

<强> View2.m

@synthesize delegate

-(void)backButtonPressed
{
    [delegate view2Finished:@"Value to be passed to view 1"];
}

<强> View1.h

// This code says that View1 implements View2Delegate
@interface View1 : UIViewController<View2Delegate>

<强> View1.m

-(void)view2Finished:(NSString *)value
{
    NSLog(@"Value received from view 2: %@", value);
}

答案 2 :(得分:0)

push segue不会创建父视图控制器的新版本。您是在viewDidLoad还是在viewDidAppear / viewWillAppear中启动会话处理?你是否在viewWillDisappear中停止处理?在viewWillDisappear中,您可以使用以下代码片段检查导航控制器的堆栈,以查看您的父视图是否已被覆盖或从堆栈中弹出:

- (void)viewWillDisappear:(BOOL)animated {

    if ([[[self navigationController] viewControllers] indexOfObject:self] == NSNotFound) {
       // we are disappearing.  Clean up the session.
        ...
    }
    [super viewWillDisappear:animated];
}

您可以使用UIViewController的 encodeRestorableStateWithCoder:方法在视图控制器中存储(有限数量)状态 - 请查看文档。我自己不使用它,但它可以帮助。

顺便说一句,您可能会发现使用UIViewController的完成:,重置: canPerformUnwindSegueAction:fromViewController:withSender:更容易创建委托协议。 Unwind segues在iOS 6中引入,代码少于代表。