1

我需要弄清楚如何识别在任何给定时间处于活动状态的情节提要。我有一个专门的天赋,我需要识别情节提要(UIView),然后根据用户按下的内容以编程方式更改内容。

  1. 所有故事板都有标识符。
  2. 在根视图的 viewDidLoad 中,我有以下内容。
- (void)viewDidLoad
 self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"View1"];
{

我想做的是确定用户在哪个情节提要上,并根据媒体执行以下 sudo-code

- (void)viewDidLoad
if (storyboard.name != RootView)
   self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"View1"];
{
else if (storyboard.name = View2){
   self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"View2"];
}

ETC....

我已经逐步完成了代码并看到了 StoryboardID,但是我很确定你不打算使用它......

提前感谢杰里米

更新:导航说明

我正在尝试实现ECSlideViewController,但它正在努力。有效地将幻灯片添加到正确的功能以显示更多选项。所以,这种想法很容易被证明是恶心的。我有主人UIViewController<title:HomeView>,然后我在屏幕上有 4 个按钮,可以连接到其他按钮UIViewControllers<View1>UIViewController<View2>等等。

为了在 View1、View2、View3、View4 上产生效果,我需要将类(ECSlideViewController根据示例)带入UIViewController<HomeView>. 但是,如果我更改下面的代码来表示这个......

self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"HomeView"]; 

它崩溃是因为它调用了自己。不好,循环编码是不行的。

但是如果我将它设置为原来的样子

self.topViewController = 
    [storyboard instantiateViewControllerWithIdentifier:@"FirstTop"];

(顺便说一句 firstTop 是与示例一起使用的视图的标题)

它有效,但随后无视UIViewController<HomeView>

这就是为什么我问是否有办法识别self.titleUIViewController说故事板......我不好),因为我将在它周围放置条件逻辑,以便不将代码放入UIViewController<HomeView>.

ECSlideViewController除非您下载并开始使用它,否则这真的很难解释。但实际上我只想测试 self.title ......我想......

另一个想法是将逻辑带入UIViewControllers四个中并让它在那里工作......但是它通过 nil 吓坏了,因为它期待一个标识符......

希望这是有道理的....

J。

4

2 回答 2

1

好的伙计们,

完全抛弃了 ECSlideViewController。我发现一些文章解释了当您有多个 UiViewController 无法正确传递数据时会出现问题。我最终使用了安德鲁斯的建议。http://www.youtube.com/feed/UCJA_puohXgnze8gPaerTeig 它对我来说更容易。

虽然我注意到苹果有什么设计指南,这通常是不可以的,但我希望他们不会介意。

再次感谢大家!

J。

于 2013-02-19T07:13:58.447 回答
0

我不确定这是否有帮助,但听起来您必须比较实例才能获得所需的结果。我还没有尝试过,但我会在您的应用程序委托中创建每个故事板的属性,然后在您的视图控制器中引用应用程序委托进行比较。这可能不是最好的编码实践,但我会把它交给你。

类似(未经测试的代码):

- (void)testStoryBoard //After awake from nib or viewDidLoad
 {
    NXAppDelegate *appDelegate = (NXAppDelegate *)[[UIApplication sharedApplication] delegate];
    if ([self.storyBoard isEqual:appDelegate.view1StoryBoard]) 
         NSLog(@"View1 Storyboard");
    else 
         NSLog(@"View 2 Storyboard");
 }
于 2013-02-18T05:28:43.483 回答