切换界面时NGUI中ScrollView没有初始化问题

在开发过程中,有时遇到这种问题,切换界面是写的缓存并没有显示第一个,这种情况,是写了缓存,但没有些初始化

正常情况下应该正常显示,

当下拉到下面,切换界面,在切换回来时,就会出现这种情况。

这问题所在就是没有初始化位置。

上代码:

 

 void Init()
    {
                 //绑定控件
        PanelList = transform.FindChild("Panel_HS").GetComponent<UIPanel>();
        SpringP = transform.FindChild("Panel_HS").GetComponent<SpringPanel>();
        panelView = transform.FindChild("Panel_HS").GetComponent<UIScrollView>();
        myWrap = transform.FindChild("Panel_HS").GetComponent<UIMyWrapContent>();
        myWrap.InitThis();
        myWrap.onInitializeItem = OnInitializeItem;
}

  //滑动执行方法
void OnInitializeItem(GameObject go, int wrapIndex, int realIndex)
    {
        if (equipList.Count < MaxItemNum + 1 || !bInit)
            return;
        if (go.name.StartsWith("Item_ZB_"))
        {
            //itemP是1~6表示哪一个预制
            int itemP = 0;
            int.TryParse(go.name.Replace("Item_ZB_", string.Empty), out itemP);
            if (realIndex > 0)
            {
                items[itemP - 1].gameObject.SetActive(false);
                return;
            }
            ///reI 是表示当前缓存的东西,是第几个
            int reI = Mathf.Abs(realIndex);
            if (equipList.Count > reI)
                items[itemP - 1].SetData(equipList[reI]);
        }
    }
 void SetListData()
    { 
              myWrap.maxIndex = 0;//去设置缓存的最大索引
            if (equipList.Count > MaxItemNum)
            {
                myWrap.minIndex = 1 - equipList.Count;
                for (int i = 0; i < MaxItemNum; i++)
                {
                    items[i].gameObject.SetActive(true);
                    items[i].SetData(equipList[i]);
                    items[i].transform.localPosition = new Vector3(0, -   myWrap.itemSize * i, 0);
                }
               
            }
            else
            {
                myWrap.minIndex = 1 - equipList.Count;
                for (int i = 0; i < MaxItemNum; i++)
                {
                    items[i].gameObject.SetActive(true);
                    items[i].transform.localPosition = new Vector3(0, -myWrap.itemSize * i, 0);
                    if (i >= equipList.Count)
                        items[i].Hide();
                    else
                        items[i].SetData(equipList[i]);
                }
            }


              //panel的初始位置
            PanelList.transform.localPosition = new Vector3(490, 187, 0);
            PanelList.clipOffset = Vector2.zero;
            SpringP.enabled = false;
            panelView.ResetPosition();
            //如果没有上面4句话就会出现上述情况,
}

在填充完数据后,加上这4句,初始化位置后就解决了这个问题。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值