【问题标题】:How to load new content into a UITableView using IBAction?如何使用 IBAction 将新内容加载到 UITableView 中?
【发布时间】:2013-01-21 04:08:23
【问题描述】:

仅供参考 - Noob iOS 开发人员在这里。

我当前的设置是一个UIViewController,其中有一个 UIView,然后是一个UITableView,在 UIVIew 中。就这样……

UIViewController --> UIView --> UITableView

这样做的原因是因为我用 tableview 包裹了其他元素。 UIViewController 将动态内容加载到表格视图中。我有一个分段控件,我想用它来切换表格视图中的内容。

我在[table reload][table beginUpdate] 上读过一些东西,但不明白如何使用它。任何帮助都会很棒。

【问题讨论】:

    标签: ios objective-c uitableview load updates


    【解决方案1】:

    为此,您需要为UISegmentedControlUIControlEventValueChanged 事件实现一个方法。

    [yourSegmentedControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];
    

    并实现segmentChanged 方法,如:

    - (void)segmentChanged:(id)sender
    {
       UISegmentedControl *mySegment = (UISegmentedControl *)sender;
    
       switch ([mySegment selectedSegmentIndex])
       {
           case 1:
               //load first contents
           break;
           case 2:
              //load second contents   
           break;
           default:
           break;
       }
       [self.yourTableView reloadData];
    }
    

    【讨论】:

      【解决方案2】:

      好的,所以[table reloadData] 将重新加载数据(因此,如果您更改数据并希望使用必要的数据更新表,请调用此命令),但在调用之后请确保调用 [table setNeedsDisplay] 以刷新用户界面.[table beginUpdates] 开始一系列插入、删除或选择接收器的行和部分的方法调用。你用[table endUpdates];结束进程

      确保将表格视图的 dataSourcedelegate 设置为 self,这可以通过 xib 和以编程方式完成,如下所示:

      [table setDelegate: self];
      

      [table setDataSource: self];
      

      如前所述:

      UISegmentedControl 调用此delegate 方法

          - (void)segmentedControl:(UISegmentedControl*)segmentedControl didSelectIndex:(NSUInteger)selectedIndex
      {
         if(selectedIndex == 0)
         {
           // Update the data
         }
         else if(selectedIndex == 1)
         {
           // Update the data
         }
      
         [table reloadData];
         [table setNeedsDisplay];
      }
      

      【讨论】:

      • 谢谢! Midhun MP 有类似的答案,但你解释了不同之处。我会试一试。
      【解决方案3】:

      例如,

      您的UIView 命名为*myView 和您的UITableView 命名为*myTableView, 你想重新加载tableview的时间,在你的UIViewController,你应该像这样重新加载tableview

      [self.myView.myTableView reload];
      

      并确保 tableview's delegatedataSourceDelegate 设置正确。

      【讨论】:

        【解决方案4】:

        需要在 ViewController.h 文件中为 tableview 设置委托和数据源,如

        UITableViewDataSource,UITableViewDelegate。

        在 ViewController.m 文件中实现委托和数据源方法

        [tableview SetDelagate:self];
        
        [tableview SetDatasource:self];
        

        实现委托方法。

        并使用

        重新加载表
        [tableView reloadData];
        

        方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-18
          • 1970-01-01
          • 2014-08-17
          • 2011-04-30
          相关资源
          最近更新 更多