转到没有segues的第二个viewController

时间:2016-08-22 12:10:52

标签: ios swift delegates segue

在下面的代码中,我有一个动作/按钮,当点击时会带你到另一个viewController(SecondViewController),一切正常,但有一行我不完全理解的代码。

这行代码在做什么?

  

secondVC.delegate = self

我们在这里谈论什么代表?如果我只需要转到其他视图并且我没有传递任何数据,那真的需要吗?

@IBAction func goToView(sender: AnyObject) {  
    let secondVC= storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as! SecondViewController  
    secondVC.delegate = self // is this needed?  
    self.presentViewController(secondVC, animated:true, completion:nil)  
} 

3 个答案:

答案 0 :(得分:6)

  
      
  1. secondVC.delegate = self
  2.   

这行编码是将当前类的对象引用传递给SecondViewController。现在,您可以通过在secondViewController中使用委托对象来调用firstViewController的方法(我假设这个名称)。

  
      
  1. 不需要此代表
  2.   

,如果你只是想转到你的情况下是NextViewController的Ne​​xt Screen。

  
      
  1. 有用的代码:
  2.   

以下将您转到下一个控制器,确保您有或没有导航控制器。与NavigationController一样,您必须将pushConController推入堆栈。

@IBAction func goToView(sender: AnyObject) {  
    let secondVC= storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as! SecondViewController  
    self.presentViewController(secondVC, animated:true, completion:nil)
} 

或者在NavigationController的情况下

@IBAction func goToView(sender: AnyObject) {  

let secondVC = self.storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as? SecondViewController
    self.navigationController?.pushViewController(secondVC!, animated: true)
}

我希望我的描述性答案会对你有所帮助。随意在评论中询问任何查询。

感谢。

答案 1 :(得分:1)

如果我遇到你的情况我会使用以下代码:

@IBAction func goToView(sender: AnyObject)
{
  self.performSegueWithIdentifier("secondViewController", sender: sender)
}

答案 2 :(得分:1)

删除

  

secondVC.delegate = self

并清楚地使用它;

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$data= new WP_Query(array(
    'post_type'=>’YOUR_POST_TYPE’, // your post type name
    'cat'      => 2, // category: product
    'order'    => 'DESC',
    'posts_per_page' => 3, // post per page
    'paged' => $paged,
    'meta_query' => array(                  //(array) - Custom field parameters
        array(
            'key' => 'give_away_event',     //(string) - Custom field key.
            'value' => 'Active',            //(string/array) - Custom field value (Note: Array support is limited to a compare value of 'IN', 'NOT IN', 'BETWEEN', or 'NOT BETWEEN')
            'type' => 'CHAR',               //(string) - Custom field type. Possible values are 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED'. Default value is 'CHAR'.
            'compare' => '=',               //(string) - Operator to test. Possible values are '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'. Default value is '='.
        )
    ),
));

if($data->have_posts()) :
    while($data->have_posts())  : $data->the_post();
            // Your code
    endwhile;

    $total_pages = $data->max_num_pages;

    if ($total_pages > 1){

        $current_page = max(1, get_query_var('paged'));

        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '/page/%#%',
            'current' => $current_page,
            'total' => $total_pages,
            'prev_text'    => __('« prev'),
            'next_text'    => __('next »'),
        ));
    }
    ?>    
<?php else :?>
<h3><?php _e('404 Error&#58; Not Found', ''); ?></h3>
<?php endif; ?>
<?php wp_reset_postdata();?>

不需要使用委托vc。 感谢