【问题标题】:Button in custom cell and reloading parent tableview自定义单元格中的按钮并重新加载父表视图
【发布时间】:2011-04-05 09:22:18
【问题描述】:

我在 tableView 中加载了 tableViewController 和 RSS 提要。我想用重新排序 rssItems 的“按日期排序”和“按受欢迎程度排序”自定义按钮实现“类似标题”的单元格(类型为 OrderCell.h/.m)数组并在按下时刷新表格视图。

如何从 OrderCell 对象方法刷新 tableView?我对 rssItems 数组重新排序没有问题,因为我将它定义为一个静态变量,其中包含可从类 TableViewController 外部获得的静态方法。 我的问题是当用户单击“order by”按钮时调用 [xxx.tableView reloadData];。 由于 OrderCell 对象是从 TableViewController 对象实例化的,如何调用 TableViewController 对象的 reload 方法?

提前致谢, 卢卡

【问题讨论】:

    标签: iphone uitableview


    【解决方案1】:

    您可以定义自己的协议,该协议将由TableViewController 类实现(确认),

    在 myTableClass.h

    @protocol AppDelegate
    
    -(void) OrderSelected ;
    
    @end
    
    @interface myTableClass : UITableViewController <AppDelegate> 
    {
      .......
    }
    @end
    

    在 OrderCell.h 中

    @interface OrderCell : .....
    {
      id<AppDelegate> myDelegate;
    }
    @property(nonatomic,assign)  id<AppDelegate> myDelegate;;
    @end
    

    在 OrderCell.cpp 中

    @synthesize myDelegate;
    
    -(void) myButtonAction:(id) sender
    {
       [myDelegate OrderSelected]; 
    }
    

    在 myTableClass.cpp 中

    当您创建 OrderCell 时,只需编写 Online Statement

    myOrderCell.myDelegate = self;
    

    并实现协议功能

    -(void) OrderSelected 
     {
       [self.tableView reloadTable];
     }
    

    【讨论】:

    • 像魅力一样工作!谢谢你,感谢 Delgate 模式 :) Luka
    【解决方案2】:

    首先在您的其他类中为您的表视图控制器添加委托,然后将您当前的表视图控制器分配给该委托,然后在您的表视图控制器中添加一个类似

    的方法
     -(void) updateTableItems {
        [self.table reloadData];
    }
    
    
    -(void) threadLoop { 
    
    [self performSelectorOnMainThread:@selector(updateTableItems) withObject:nil waitUntilDone:NO];
    
    }
    

    现在使用表视图控制器的其他类调用 threadLoop 的委托, 祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多