2017-07-26 54 views
0

我正在使用Objective-C编写的应用程序中构建一个功能。我不能发布代码,但我会尽力描述我的世界。我面临的问题与代表有关。将委托传递给另一个视图控制器的代表

  1. AlphaViewController具有ConnectionView作为delegate之一。它有助于对提供给AlphaViewController的数据添加执行一些操作,并且我们在AlphaViewController's视图上显示输出。

  2. 当您点击AlphaViewController中的按钮时,我将显示一个UIAlertController。从中我可以点击一个按钮打开ReportViewBetaViewController创建ReportView

  3. BetaViewController具有ReportGenerator作为其delegateReportGenerator有助于生成一些我在BetaViewController's视图中呈现的HTML。

我的问题是,我想使用ConnectionView's输出(我相信是在AlphaViewControllerConnectionView对象的一部分),在ReportGenerator处理它,然后在BetaViewController's视图呈现HTML数据。

我一直在寻找解决方案,但一直无法找出任何东西。我对代表不满意。

请帮助我实现我的目标。对不起,我无法发布代码。

+0

你能指定什么样的输出吗?字符串,图像等。 – luckyShubhra

+0

@luckyShubhra输出属于ConnectionView类型。 –

回答

0
  1. 可以前推从AlphaViewController通过你的ConnectionView's输出BetaViewController。当您将BetaViewController作为ReportGenerator的代表ReportGenerator分配给传递数据,即ConnectionView's输出到ReportGenerator并获取ReportGenerator来处理它,然后在BetaViewController's视图中呈现HTML中的数据。

它可能看起来很复杂,但它可以实现。

  1. 还有第二种方法比上述使用AppDelegate简单得多。你可以在你的AppDelegate类中声明和定义一个属性,并可以在课堂的任何地方访问它。

    //Interface: 
    
    @interface MyAppDelegate : NSObject { 
        NSString *yourString; // Declare your object 
    } 
    
    @property (nonatomic, strong) NSString *yourString; 
    ... 
    @end 
    
    //and in the .m file for the App Delegate  
    @implementation MyAppDelegate 
    
    @synthesize yourString; 
    yourString = some string; 
    
    @end 
    
    //You can access the property to save and retrieve your file. You can save 
    MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate]; 
    appDelegate.yourString = some NSString;  //..to write 
    

呦可以作为

MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate]; 
someString = appDelegate.myString; //..to read 

对于没有阅读BetaViewController或ReportGenerator值按照您的要求。您可以创建模型类的属性,并按照上面的定义访问它。

+0

AppDelagate方法更好,因为您可以在项目的任何位置访问此方法。 –

+0

@luckyShubhra非常感谢你的解决方案。它完美无瑕!但是,这里有一个问题。当我从BetaViewController返回到AlphaViewController时,ConnectionView的输出从屏幕消失。似乎对象完全传递给BetaViewController,但不会被AlphaViewController保留。你对此有何看法?我正在自行修复它,但无论如何都想知道它的原因。 –

+0

对不起,我的错误。我从不使用ARC的旧项目复制它。将AppDelegate中的属性更改为强和非原子。 – luckyShubhra

相关问题