您的位置:首页 > 产品设计 > UI/UE

UIViewController数据刷新

2016-04-25 17:14 423 查看
</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];
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: