我有4个单独的视图,并且我想在按下其中一个按钮时隐藏其他3个视图,我将它们放在堆栈视图中,但是由于.isHidden = true某种原因不会隐藏视图,当它们不在其中时,它可以正常工作堆栈查看有关如何实现此建议的任何建议?
@IBAction func qbpressed(_ sender: Any) {
QBContainer.isHidden = false
WRContainer.isHidden = true
RBContainer.isHidden = true
QBIndicator.isHidden = false
WRIndicator.isHidden = true
RBIndicator.isHidden = true
TEIndicator.isHidden = true
QBButton.setTitleColor(#colorLiteral(red: 0, green: 0.5008062124, blue: 1, alpha: 1), for: .normal)
WRButton.setTitleColor(#colorLiteral(red: 0.7540688515, green: 0.7540867925, blue: 0.7540771365, alpha: 1), for: .normal)
RBButton.setTitleColor(#colorLiteral(red: 0.7540688515, green: 0.7540867925, blue: 0.7540771365, alpha: 1), for: .normal)
TEButton.setTitleColor(#colorLiteral(red: 0.7540688515, green: 0.7540867925, blue: 0.7540771365, alpha: 1), for: .normal)
if intersitial.isReady{
intersitial.present(fromRootViewController: self)
}
}
Run Code Online (Sandbox Code Playgroud)
我试图搜索有关StackView Widget的信息,我发现了很多,但没有人习惯从url获取数据.所以问题是,当我正在处理url时,我的RemoteViews为null,因此它们不会显示任何内容.一旦完成该过程,我想从asyntask更新那个RemoteViews(在同一个类中).我怎样才能做到这一点 ?或同步他们?
这是我的Widget服务代码:
public class RSSService extends RemoteViewsService {
private ManagerRSS mr;
private Cursor c;
private int lenght;
private List<Provider> mWidgetItems = new ArrayList<Provider>();
private RemoteViews rv = null;
public ArrayList<Item> result = new ArrayList<Item>();
private boolean isFinished = false;
@Override
public void onCreate() {
// TODO Auto-generated method stub
mr = new ManagerRSS(this.getApplicationContext());
mr.open();
mr.openRead();
c = mr.getCursor();
lenght = c.getCount();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
c.close();
mr.close();
super.onDestroy(); …Run Code Online (Sandbox Code Playgroud) 目前,我设置了稍后添加到堆栈视图中的视图之一的高度和宽度约束,如下所示:(供您参考,productsTable 是 UITableView。)
productsTable.heightAnchor.constraintEqualToConstant(tableHeight).active = true
productsTable.widthAnchor.constraintEqualToConstant(stackWidth).active = true
stackView.insertArrangedSubview(productsTable, atIndex: productsTableIndex)
Run Code Online (Sandbox Code Playgroud)
稍后,在 ViewWillAppear 中,我想更改 productsTable 高度,如下所示:
productsTable.heightAnchor.constraintEqualToConstant(newHeight).active = true.
Run Code Online (Sandbox Code Playgroud)
尽管如此,在(更改/更新)ViewWillAppear 中的约束后,表视图仍保持相同的大小。我是否做错了什么或可以采取不同的措施来达到预期的效果?
我目前正在使用UICollectionView构建通用表单构建器.
每个表单元素都是一个单元格,对于复选框,我在单元格内部使用UIStackView来显示所有可用选项.
问题是,每次我重复使用单元格时,即使我删除了所有已排列的子视图,它们也会在新视图中保留.
以下代码是我正在做的简化版本:
class cell: UICollectionViewCell {
@IBOutlet weak var stackView: UIStackView!
func setup(options: [String]) {
for option in options {
let label = UILabel()
label.text = option
stackView.addArrangedSubview(label)
}
}
override func prepareForReuse() {
super.prepareForReuse()
optionsStackView.arrangedSubviews.forEach({ optionsStackView.removeArrangedSubview(view: $0) })
}
}
Run Code Online (Sandbox Code Playgroud)
而不是那样,我目前的解决方法是在prepareForReuse()中隐藏()每个arrangeSubview而不是删除它们,但我不喜欢它.
有一个 ViewController1,它有一个 stackView。我创建了一个 ViewController2 实例并将它的视图作为子视图添加到 ViewController1 的 stackView 中,我想看看是否只有这样做才会调用 ViewController2 的 viewDidLoad 并且这样做了,当我将 ViewController2 的视图添加到时调用了 ViewController2 viewDidLoad ViewController1 的 stackView。例如:在 ViewController1self.stackView.addArrangedSubView(viewControler2.view)
那么为什么我们需要做 addChild(viewController2) 然后将视图添加为子视图,那些添加 childController 的典型行及其在父视图控制器层次结构中的视图