簡體   English   中英

如何訪問以編程方式創建的按鈕?

[英]How do I access programmatically created buttons?

我正在向導航欄添加多個按鈕,就像這樣。

UIToolbar* tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 133, 44.01)];

NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:2];
UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(assignSelected)];
bi.style = UIBarButtonItemStyleBordered;

[bi setEnabled:FALSE];

[buttons addObject:bi];
[buttons addObject:self.editButtonItem];

[tools setItems:buttons animated:NO];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];

self.editButtonItem.title = @"Select";

基本上我這樣做是為了讓他們可以使用編輯按鈕來選擇一組項目並對它們采取行動。 我想啟用我在編輯時添加的操作按鈕。 我有以下方法來控制編輯時按鈕所說的內容。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];

    if (editing)
    {
        self.editButtonItem.title = NSLocalizedString(@"Cancel", @"Cancel");
    }
    else
    {
        self.editButtonItem.title = NSLocalizedString(@"Select", @"Select");
    }
}

那就是我要啟用和禁用操作按鈕的地方。 我不確定如何訪問該按鈕,因為它是以編程方式創建的。

您應該能夠通過您創建它的“bi”變量來訪問它。 bi 變量應該保存指向按鈕的指針。 因此,您可以像這樣調用該按鈕上的方法:

[bi methodName:methodArg];

我正在使用 innerHTML 動態創建按鈕,但之后似乎無法在 DOM 上訪問它們。 我嘗試使用 queryselectorall 創建按鈕的節點列表,但列表為空。 抱歉,這似乎是一個基本的問題。

 const displayDrivers = (drivers) => {
  const displayDrivers = drivers
    .map((driver) => {
      return

    <div class="driver-profile">
        <div class="driver-profile__shape--id-cont">
          <img src="${
            driver.image
          }" alt="Driver Image" class="driver-card__img" />
          <p class="driver-profile__paragraph">${driver.firstName}
          &nbsp;${driver.surname}</p>
          <div class="driver-profile__rating">
            <div class="driver-profile__stars">
              <svg class="driver-card__icon-star">
                <use xlink:href="img/sprite.svg#icon-star"></use>
              </svg>
              <svg class="driver-card__icon-star">
                <use xlink:href="img/sprite.svg#icon-star"></use>
              </svg>
              <svg class="driver-card__icon-star">
                <use xlink:href="img/sprite.svg#icon-star"></use>
              </svg>
              <svg class="driver-card__icon-star">
                <use xlink:href="img/sprite.svg#icon-star"></use>
              </svg>
              <svg class="driver-card__icon-star">
                <use xlink:href="img/sprite.svg#icon-star_half"></use>
              </svg>
            </div>
            <div class="driver-profile__rating--score">${driver.calcRating()}</div>
          </div>
          <div class="driver-profile__lesson-count">${
            driver.lessonsCompleted
          } lessons</div>
          <button class="btn" type="submit" name="alter-submit">Book</button>
        </div>
        <!-- calendar and price per hour -->
        <div class="driver-profile__calendar-cont">
          <h4 class="heading--fourth is-visible">Availability</h4>
          <div class="driver-profile__calendar">
            <img
              src="../img/calendar.jpg"
              alt="Driver image"
              class="driver-profile__calendar-image"
            />
          </div>
          <div class="driver-profile__price">Lesson price: €${
            driver.prices["1 hour"]
          } p/h</div>
        </div>

        <!-- bio and qualifications -->
        <div class="driver-profile__bio">
          <div class="driver-profile__bio--btn-cont">
            <button class="square-btn videoBtn">Video</button>
            <button class="square-btn bioBtn">Biography</button>
            <button class="square-btn priceBtn">Prices</button>
            <button class="square-btn reviewBtn">Reviews</button>
          </div>
          <div class="instruction__video-wrapper is-visible">
            ${driver.videoLink}
          </div>
          <p class="driver-profile__bio-paragraph hide">
            ${driver.biography}
          </p>
          <p class="driver-profile__prices hide">
            <span class="driver-profile__span">
              1 hour lesson:&nbsp;
              <span class="driver-profile__span--2">€${
                driver.prices["1 hour"]
              }</span>
            </span>
            <span class="driver-profile__span">
              90 minute lesson:&nbsp;
              <span class="driver-profile__span--2">€${
                driver.prices["90 minutes"]
              }</span>
            </span>
            <span class="driver-profile__span">
              5 x 1 hour lessons:&nbsp;
              <span class="driver-profile__span--2">€${
                driver.prices["5 x 1 hour"]
              }</span>
            </span>
            <span class="driver-profile__span">
              10 x 1 hour lessons:&nbsp;
              <span class="driver-profile__span--2">€${
                driver.prices["10 x 1 hour"]
              }</span>
            </span>
          </p>
        </div>
      </div>

    })
    .join("");

  driversSection.innerHTML = displayDrivers;
};

window.addEventListener("DOMContentLoaded", () => {
  displayDrivers(drivers);
});

// select btns

const videoBtns = document.querySelectorAll(".videoBtn");
const bioBtns = document.querySelectorAll(".bioBtn");
const priceBtns = document.querySelectorAll(".priceBtn");
const reviewBtns = document.querySelectorAl

l(".reviewBtn");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM