【问题标题】:UITableView w/ Button Initiating with Wrong ParentUITableView w/ Button Initiating with Wrong Parent
【发布时间】:2009-12-09 19:04:38
【问题描述】:

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

“dismissModalController”方法位于与 TableView 不同的控制器中,但按钮希望默认为 TableViewController 而不是使用“dimissModalController”所在的目标控制器。

如何将 UIView 中按钮的功能复制到 UITableView 中?

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;
}

【问题讨论】:

    标签: iphone uitableview uiview


    【解决方案1】:

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

    此外,您可以关闭模​​态视图控制器,而不是设置委托。我觉得这更简单。这是dismissModalViewControllerAnimated:的iPhone开发中心讨论

    父视图控制器是 负责解散模态 它使用呈现的视图控制器 presentModalViewController:动画: 方法。如果您在 然而,模态视图控制器本身, 模态视图控制器 自动将消息转发到 它的父视图控制器。

    【讨论】:

      【解决方案2】:

      尝试了一些可行但会引发警告的方法。但是,警告永远不会结束程序。基本上我在参数中设置父级并在调用此方法时传递一个 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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-22
        • 2014-01-20
        • 1970-01-01
        • 2018-02-12
        • 2016-03-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多