UITableView w / Button使用错误的父启动

时间:2009-12-09 19:04:39

标签: iphone uitableview uiview

我正在尝试在关闭视图的ModalView的导航控件的右上角放置一个“关闭”或“完成”按钮。使用普通的UIView,我能够做到这一点。但是,当我尝试为我的ModalView使用UITableView时,我无法再将BarButton的目标设置为父控制器。

“dismissModalController”方法在一个单独的控制器中,而不是TableView的,但是按钮想要默认使用TableViewController,而不是使用“dimissModalController”所在的目标控制器。

如何使用UITableView复制UIView中按钮的功能?

UITableView启动(不工作):

   -initWithStyle:(UITableViewStyle) style {
        ToolbarController *myParent;
 if(self=[super initWithStyle:style]) {
  self.title=@"Widgets List";
  UIBarButtonItem *rightButton = 
  [[UIBarButtonItem alloc] initWithTitle:@"Dismiss" 
           style:UIBarButtonItemStyleDone
          target:myParent
          action:@selector(dismissModalController)
   ];
  self.navigationItem.rightBarButtonItem=rightButton;
  [rightButton release];
 }
 return self;}

UIView启动(工程):

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    parent:(ToolbarController*) myParent{
 if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
  UIBarButtonItem *rightButton = 
  [[UIBarButtonItem alloc] initWithTitle:@"Dismiss" 
           style:UIBarButtonItemStyleDone
          target:myParent 
          action:@selector(dismissModalController)
   ];
  self.navigationItem.rightBarButtonItem=rightButton; 
  [rightButton release];

 }
 return self;
}

2 个答案:

答案 0 :(得分:1)

在使用它之前,您没有在initWithStyle中设置“myParent”。

此外,您可以从自身中解除模态视图控制器,而不是设置委托。我觉得这个更简单。以下是iPhone开发人员中心对dismissModalViewControllerAnimated:

的讨论
  

父视图控制器是   负责解雇模态   查看它使用的控制器   presentModalViewController:动画:   方法。如果你在上面调用这个方法   然而,模态视图控制器本身,   模态视图控制器   自动转发消息   它的父视图控制器。

答案 1 :(得分:0)

尝试了一些有效但却发出警告的东西。但是,警告永远不会结束该程序。基本上我在参数中设置parent并在调用此方法时传递ToolbarController。两种其他尝试之间的混合体。我认为它不会起作用,这可能是不好的做法,但确实解决了这个问题。

-initWithStyle:(UITableViewStyle) style parent:(ToolbarController*) myParent {
        self.title=@"Widgets List";
        UIBarButtonItem *rightButton = 
        [[UIBarButtonItem alloc] initWithTitle:@"Dismiss" 
                                         style:UIBarButtonItemStyleDone
                                        target:myParent
                                        action:@selector(dismissModelController)
         ];
        self.navigationItem.rightBarButtonItem=rightButton;
        [rightButton release];
    return self;
}