Переопределение метода установщика и вывод информации

Если я вас правильно понимаю, вы пытаетесь добавить кнопку в правом нижнем углу вашей карусели. Если это так, демоверсия показывает карусель Bootstrap, где я поместил кнопку как абсолютную внутри контейнера родительской карусели, как вы и хотели. Но я сохранил оригинальные свойства карусели и не вмешивался в них.

.rightBtn {
  position: absolute;
  bottom: 0px;
  right: 0px;
  background-color: teal;
  color: white;
  border-radius: 4px;
  margin: 0px 10px 10px 0px;
  padding: 10px;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
  <div class="carousel-inner">

    <ol class="carousel-indicators">
      <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
      <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
      <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
    </ol>
    <div class="carousel-item active">
      <img class="d-block w-100" src="https://picsum.photos/300?image=28" alt="First slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="https://picsum.photos/300?image=29" alt="Second slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="https://picsum.photos/300?image=30" alt="Third slide">
    </div>
    <span class="rightBtn">button</span>
  </div>
  <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

7
задан Craig 13 April 2009 в 20:04
поделиться

2 ответа

Вам не нужно синтезировать numberOfSides, если вы планируете реализовать метод получения и установки. Без @synthesize numberOfSides вы можете вернуть BOOL, если захотите. Вам нужно будет соответственно объявить метод получения / установки в вашем интерфейсе.

Кстати, другой подход - использовать синтезированный метод получения / установки и добавить отдельный метод - (BOOL) isNumberOfSidesValid , который выполняет это. проверьте.

7
ответ дан 7 December 2019 в 01:26
поделиться

В подобной ситуации, возможно, лучше использовать простой вызов assert() или выброс исключения.

Выбор будет зависеть от того, как вы собираетесь использовать этот класс. Если он будет частью библиотеки, и вы ожидаете, что другие разработчики будут часто предоставлять неверные значения для minimumNumberOfSides или maximumNumberOfSides, вам, вероятно, следует выбросить соответствующее исключение.

Однако следует предупредить. Если вы ожидаете, что пользователи вашего приложения будут часто вводить неверные значения, то исключение - плохая идея. Обработка исключений в Objective-C - дорогостоящая операция. Если эти проверки проводятся ради пользователя, вам следует выполнять валидацию ввода и сообщать пользователю об ошибках гораздо более дружелюбным способом.

edit: Вот небольшой пример кода:

-(void)setMinimumNumberOfSides:(int)minimum
{
    if (minimum <= 2)
    {
        [NSException raise:@"invalid minimumNumberOfSides value"
                    format:@"value of %d is too low (must be > 2)", minimum];
    }

    minimumNumberOfSides = minimum;
}

edit: Вот другой вопрос SO, в котором подробно рассматривается обработка исключений в Objective-C.

3
ответ дан 7 December 2019 в 01:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: