我有一个表格视图,其中我已将子单元格子类化。在这些单元格中,我添加了UIView的子视图。滑动单元格时,我将另一个UIView添加到UITableViewCell的子类。
我想在第二个UIView(UITableViewCell中的子视图)内按下按钮时呈现ModalViewController。我在这个视图中没有导航控制器,因此我从视图控制器传递导航控制器,我的表视图在里面和下面到我的第二个UIView。
在这里,我像往常一样称呼它,但没有任何反应。
ComposeCommentViewController *ccvc = [[ComposeCommentViewController alloc] initWithNibName:@"ComposeCommentViewController" bundle:nil];
[navController presentModalViewController:ccvc animated:YES];
有没有人知道我可能做错了什么或有其他解决方案?
编辑:这就是我设置navController
首先我将它传递给我的UITableViewCell的子类。
if (feedCell == nil)
{
feedCell = [[FeedCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
[feedCell setNavigationControllerForSlidedView:[self navigationController]];
}
子类的方法setNavigationControllerForSlidedView:
如下所示:
- (void)setNavigationControllerForSlidedView:(UINavigationController *)navController
{
[feedSlidedView setNavController:navController];
}
在FeedSlidedView
我已声明并合成UINavigationController *navController;
答案 0 :(得分:4)
这种方式与MVC(模型 - 视图 - 控制器)设计实践相反。您有许多机制可以在Apple的SDK中提供的MVC框架中完成您想要的内容。在我看来,最简单的可能是在UITableViewCell的子视图中为按钮添加目标动作。在视图控制器的tableView:cellForRowAtIndexPath:
方法中,添加如下内容:
[button addTarget:self action:@selector(presentComposeComment:) forControlEvents:UIControlEventTouchUpInside];
在这种情况下,self
将是负责有问题的UITableView的UIViewController。然后,您将在该视图控制器中包含上面选择器的方法:
- (void)presentComposeComment:(id)sender {
ComposeCommentViewController *ccvc = [[ComposeCommentViewController alloc] initWithNibName:@"ComposeCommentViewController" bundle:nil];
[self presentModalViewController:ccvc animated:YES];
}
请注意,我不是将presentModalViewController:animated:
消息发送到导航控制器,而是发送视图控制器。