によってそれらを取得中に入れ直すとき、私はiPhoneのSpringboardドラッグを模倣し、タイルゲームのための機能をドロップしようとしており、現在でUIButtonsを生成するMatrixCellsを使用していますUIButtonsを巡回する際、適切に機能しますが、ではありません初期化を表示してビューに追加します。 MatrixCellsにはorder
というタグがあり、それ自体のボタンにも使用されています([button setTag:[cell order]];
)。 使用layoutsubviews()タグ
- (void)layoutSubviews {
int row = 0;
int col = 0;
for (UIButton *button in [self subviews]) {
[button setFrame:CGRectMake(col * 80 + 5, row * 80 + 25, 70, 70)];
if (col < 3) {
col++;
}
else {
row++;
col = 0;
}
}
}
セルの順序を変更するとき、私は私が全くそこに周りの混乱になっていないよかなり確信しているので、subviews
を巡回して、動作しません。だから、私は私のMatrixCells
を循環したかったし、適切なビューを取得し、その後frame
を変更するために彼らのorder
を使用しています。しかし、レイアウトはボタン0でうんざりしてしまい、もうボタンとして使うことはできません。ここで
- (void)layoutSubviews {
int row = 0;
int col = 0;
for (MatrixCell *cell in currentOrder) {
UIView *view = [self viewWithTag:[cell order]];
[view setFrame:CGRectMake(col * 80 + 5, row * 80 + 25, 70, 70)];
if (col < 3) {
col++;
}
else {
row++;
col = 0;
}
}
}
結果と絵です:http://i52.tinypic.com/2q903lk.png
viewWithTag
は、このための最もエレガントな解決策になると思われました。だから私は迷っている。なぜこれらの実装が同じものを提供しないのか?
完全に正確ではないが、それは右のトラックに私をもたらしました。私はちょうど背景のための 'UIColor'を設定し、ボタンは' setImage'も持っています。しかし、 '[self viewWithTag:0]'は 'self'を返しました。フレームを完全に台無しにしてしまいました。ボタン0を忘れてしまって、他のボタンにアクセスできませんでした。しかし、私はそれを解決したので、ありがとう!プロトコルは今何ですか、私はこの答えを正しいものとしてマークしますか?代わりに私自身の質問に答える必要がありますか? – SpacyRicochet
ああ、私の精神的なデバッグは失敗しました(しかし、ちょうど!)。この場合、おそらく私自身の答えを書いて、それを受け入れるでしょう。しかし、アップヴォートは決してうまくいっていない;) –
ああ、私はまだ投票しても十分な評判がない低学年だ。しかし、それが可能になると、私はそうすることを確認します:) – SpacyRicochet