Где инициализировать подсистемы в приложениях Swift

Я думаю, вы не добавляете кнопки в свой элемент section. С вашего CSS стили, которые вы хотите, будут применяться только к кнопкам в элементе section. Но вы добавляете динамически созданные кнопки к документу body.

Попробуйте дать вашему section элементу id, ссылаться на него, а затем добавить к нему динамически созданные кнопки.

Что-то вроде этого должно работать:

let buttons = [];
let section = document.getElementById("section");
const CLS = ["thin", "button"];
let add_btns = document.querySelector('.add-btn');
add_btns.addEventListener("click", function() {
  let i = 0;
  while (i <= 40) {
    let btn = document.createElement("BUTTON");
    buttons.push(section.appendChild(btn));
    i++;
    for (let button in buttons) {
      btn.setAttribute('id', "button " + button);
      btn.classList.add(...CLS);
      btn.innerHTML = "Button # " + button;
    }
    btn.addEventListener("click", function() {
      let id = this.id;
      alert("my id is: " + id);
    });
  }
});
html h1,
body h1 {
  margin-top: -5rem;
  text-align: center;
  color: #41403E;
  font-size: 3rem;
}

html section,
body section {
  display: flex;
  flex-direction: row;
  justify-content: center;
  margin-bottom: 3rem;
}

html section button,
body section button {
  align-self: center;
  background: transparent;
  padding: 1rem 1rem;
  margin: 0 1rem;
  transition: all .5s ease;
  color: #41403E;
  font-size: 2rem;
  letter-spacing: 1px;
  outline: none;
  box-shadow: 20px 38px 34px -26px rgba(0, 0, 0, 0.2);
  border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;
}

html section button:hover,
body section button:hover {
  box-shadow: 2px 8px 4px -6px rgba(0, 0, 0, 0.3);
}

html section button.dotted,
body section button.dotted.thick {
  border: dotted 5px #41403E;
}

html section button.thin,
body section button.lined.thin {
  border: solid 2px #41403E;
}
<section id="section">
  <button class="add-btn">
Button
</button>
</section>

-1
задан ohthepain 20 January 2019 в 07:24
поделиться

1 ответ

Самый простой способ - поместить это в AppDelegate. Для этого вы можете использовать функцию application(_:didFinishLaunchingWithOptions:).

Если вам нужно настроить многое, вы можете создать для этого отдельный класс «Координатор», а не загромождать AppDelegate.

Использование с UIMainStoryboardFile в Info.plist

Если в вашем Info.plist установлена ​​клавиша UIMainStoryboardFile, основная раскадровка будет автоматически загружена AppDelegate. Затем он инициализирует контроллер начального вида перед вызовом application(_:didFinishLaunchingWithOptions:).

Решением для этого является удаление клавиши UIMainStoryboardFile и загрузка раскадровки вручную следующим образом:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
  // Do your setup here

  let storyboard = UIStoryboard(name: "Main", bundle: nil)
  guard let rootViewController = storyboard.instantiateInitialViewController() else {
    fatalError("No intitial view controller configured in Main.storyboard")
  }

  window.rootViewController = rootViewController
  window.makeKeyAndVisible()
  return true
}
0
ответ дан wvteijlingen 20 January 2019 в 07:24
поделиться