菜鸟教程小白 发表于 2022-12-12 10:04:03

ios - iPad 中 SplitViewController 中的两个 UITableView Controller ,Delegate


                                            <p><p> <img src="/image/WklAj.png" alt="enter image description here"/> </p>

<p>嗨,这是我的第一个 iPad 应用程序,正在尝试将我的 iphone 应用程序移植到 iPad。
我已按照 <a href="http://www.raywenderlich.com/" rel="noreferrer noopener nofollow">http://www.raywenderlich.com/</a> 中的所有教程进行操作仍然有问题。 </p>

<p>还要查看这个问题,但问题仍然存在。 <a href="https://stackoverflow.com/questions/7568592/splitviewcontroller-with-two-tableviews-delegate-problem" rel="noreferrer noopener nofollow">Splitviewcontroller with two tableviews, delegate problem</a> </p>

<p>基本上,我在 SplitViewController 中有两个 UITableViewController,当我单击 Root ViewController 中的 tableview 单元格时,我想在另一个 Tableview 右侧的 DetailsViewController 中填充详细信息。 </p>

<p>问题是我可以设法从中传递数组数据,但我不能调用 tableview reload 方法。 </p>

<hr/>

<p>这里是代码</p>

<p>左 ViewController </p>

<pre><code>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSUInteger row = ;

    if (row == 0){

      NSLog(@&#34;Row 0 Pressed&#34;);

         RightViewController *rightvc = ;

      _locallayleft = .conversationsInfos;

      NSLog(@&#34;Just pushed the array&#34;);

      rightvc.detailItem = _locallayleft;
      rightvc.title = @&#34;Greetings&#34;;


    }

    else if (row == 1) {
      NSLog(@&#34;Row 1 Pressed&#34;);

         RightViewController *rightvc = ;


      _locallayleft = .conversationsInfosgeneral;

      rightvc.detailItem = _locallayleft;
      rightvc.title = @&#34;General Conversation&#34;;

    }

-----------------------------------------------------------------------------------------
RightViewController


- (void)setDetailItem:(NSArray *)newDetailItem
{

    if(_detailItem != newDetailItem) {

      _detailItem = newDetailItem;

      ;

    }
}


- (void)configureView
{
    if (self.detailItem) {


      self.locallay = self.detailItem;

      _listOfCoversation = [ init];
      for (ConversationInEnglish *c in _locallay)

      {
            NSString *english = c.english;
            NSLog(@&#34;setDetails Item get called&#34;);
            NSLog(@&#34;%@&#34;,english);

            ;
      }
      ;
      NSLog(@&#34;Trying to reload TableView&#34;);

    }


}

- (void)viewDidLoad
{
    ;
    ;

}






#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    return ;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @&#34;English&#34;;
    UITableViewCell *cell = ;

    ConversationInEnglish *con = _locallay ;
    _englishLabel = (UILabel *) ;

    _englishLabel.text = con.english;
    NSLog(@&#34;My data from cell %@&#34;,con.english );

    ];

    _myanmarLabel = (UILabel *) ;
    ];

    _tonebasedLabel = (UILabel *) ;
    _tonebasedLabel.text = con.tone_based;


    UIColor *background = [ initWithPatternImage:];

    self.tableView.backgroundColor = background;

    return cell;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>看起来当您点击左侧表格中的一行时,不是更新右侧的表格,而是从 Storyboard 中实例化一个全新的表格,而不是用它替换右侧的表格.</p>

<p>这里没有足够的上下文来准确说明如何修复它,但是您想要做的是当您点击左侧表格中的一行时,通过设置其 detailItem 属性来更新右侧表格. </p>

<p>您需要访问其他表格 View 。有几种方法可以做到这一点,具体取决于您如何设置应用程序 - 如果您在 iPhone 和 iPad 上使用相同的左 TableView ,那么您可能需要一些条件代码来定位它,因为示例:</p>

<pre><code>if (.userInterfaceIdiom == UIUserInterfaceIdiomPad) {
    DetailViewController *detailViewController = (DetailViewController *)[ topViewController];
    detailViewController.detailItem = newDetailItem;
}
</code></pre>

<p>或者您可以通过 Storyboard 对其进行配置。无论哪种方式,关键是找到并更新现有的 TableView ,而不是从 Storyboard 中实例化一个新的。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - iPad 中 SplitViewController 中的两个 UITableViewController ,Delegate,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15848328/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15848328/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - iPad 中 SplitViewController 中的两个 UITableView Controller ,Delegate