是。我有length
名为UIViewController
。这是一个自定义导航结构,其中包含不同的“插槽”,我可以在其中添加内容并在这些插槽之间滑动 - 这对于实际问题并不重要,只是为了获得代码。
“{1}}中添加了”Slot“4号,如下所示:
NavigatorViewController
工作正常。我看到了我在故事板上添加的NavigatorViewController
(slot4 = [self.storyboard instantiateViewControllerWithIdentifier:@"view4"];
slot4.view.frame = CGRectMake(screenWidth*2, 0.0, screenWidth, screenHeight);
[self.view addSubview:slot4.view];
)。
在这个slot4内部UIViewController我想添加另一个子视图。另一个名为UIViewController
的UIViewController。我用这些行添加它:
view4
到目前为止一切都那么好 - 它也可以。但..
我的问题是在ChatViewController中有一个名为ChatViewController
的UITextView。我已经设定了这个:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ChatViewController *viewController = (ChatViewController *)[storyboard instantiateViewControllerWithIdentifier:@"Chat"];
viewController.view.tag = 266;
[slot4.view addSubview:viewController.view];
chatTextView
标题中的,因为我想从@interface ChatViewController : UIViewController <UITextViewDelegate> (...)
获取操作。所以fx。当ChatViewController
“成为firstResponder”时,它会调用某种动作。为了实现这一点,我必须设置
chatTextView
在chatTextView
的{{1}}方法中。
但是当我运行项目并点击chatTextView.delegate = self;
时,它会崩溃。
我收到一条错误消息:
ChatViewController
当我将viewDidLoad
的委托设置为chatTextView
时,没有错误,但我无法使用它: - )
请问我是否遗忘了什么!
答案 0 :(得分:1)
而不是仅将ChatViewController
视图添加为子视图,请尝试使用
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ChatViewController *viewController = (ChatViewController *)[storyboard instantiateViewControllerWithIdentifier:@"Chat"];
viewController.view.tag = 266;
[slot4 addChildViewController:viewController];
[slot4.view addSubview:viewController.view];
[viewController didMoveToParentViewController:slot4];
使用相同的方法添加slot4,
slot4 = [self.storyboard instantiateViewControllerWithIdentifier:@"view4"];
slot4.view.frame = CGRectMake(screenWidth*2, 0.0, screenWidth, screenHeight);
[self addChildViewController:slot4];
[self.view addSubview:slot4.view];
[slot4 didMoveToParentViewController:self];