UIViewController数据刷新

来源:互联网 发布:淘宝买水烟被警察 编辑:程序博客网 时间:2024/06/06 05:43

</pre>思考:<p></p><p><span style="font-size:14px">正常情况下,UITableViewController可以刷新数据,采用<span class="s1">[</span><span class="s2">self</span><span class="s1">.</span><span class="s3">tableView</span><span class="s1"></span><span class="s4">reloadData</span><span class="s1">]; 但是假使原先的控制器并不是继承自UITableViewController怎么办呢?</span></span></p><p></p><p><span style="font-size:14px">实际开发中,遇到问题如下:</span></p><p><span style="font-size:14px">点击浮层上面的招商银行卡,需要将底层的借记卡尾号,图标,银行名称全部更换掉,浮层背后的页面是UIViewController。</span></p><p><span style="font-size:14px"></span></p><p><span style="font-size:14px">解决方法如下:</span></p><p><span style="font-size:14px">银行卡担保界面的创建是通过封装一个view创建的(UIView继承自UIScrollView),在创建的时候传不同的参数创建。</span></p><p><span style="font-size:14px"></span></p><pre name="code" class="objc">- (void)initializeViewswithparma:(NSString *)cardDesc andAvailableCardList:(TNHotelAvaliableCardList *)availableCardList


当点击交换按钮的时候,需要在封装的view里面先清除的原先的界面,再重新创建新的界面就可以。

- (void)refreshView{    [self.scrollView removeFromSuperview];}


//点击浮层上面的常用卡 更换不同的界面。

- (void)refreshViewController:(TNHotelAvaliableCardList *)cardlist{    [self.creditInfoView refreshView];    self.validInfo = nil;    self.bankNumber = nil;    self.cardNumber = nil;    self.availableCardList = cardlist;         [self initializeViewswithparma:self.availableCardList.cardTypeDesc andAvailableCardList:self.availableCardList];}


中间是采用block进行传模型的,方法如下:

采用block进行传递,

在浮层页面点击交换按钮的时候,用一个block记录下点击事件,并且将浮层页面的模型传给银行卡担保界面。

@property (nonatomic, copy) void(^hotelCardTypeDesc)(TNHotelAvaliableCardList *availist);


点击的浮层cell的时候,保存好模型。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];    self.selectIndex = indexPath.row;    if ([self.changeWays[indexPath.row] isKindOfClass:[TNHotelAvaliableCardList class]]) {        TNHotelAvaliableCardList *cardList = self.changeWays[indexPath.row];        [self dimissSelfWithAnimattion:0.0f];        if (self.hotelCardTypeDesc) {            self.hotelCardTypeDesc(cardList);        }    } else    {      TNHotelGuaranteeWay *way = self.changeWays[self.selectIndex];      [self goToPay:way.type];    }}

在银行卡担保界面:

//block用于回调之前的参数    controller.hotelCardTypeDesc = ^(TNHotelAvaliableCardList *par1)    {        [self refreshViewController:par1];    };





0 0
原创粉丝点击